[UIView beginAnimations:context:]与[UIView animateWithDuration:animations:]值得注意的一个区别

简介:

原文链接:http://longtimenoc.com/archives/uiview-beginanimationscontext%E4%B8%8Euiview-animatewithdurationanimations%E5%80%BC%E5%BE%97%E6%B3%A8%E6%84%8F%E7%9A%84%E4%B8%80%E4%B8%AA%E5%8C%BA%E5%88%AB


看过官方文档的都知道,官方推荐在iOS4以后使用[UIView animateWithDuration:animations:],而不是原来的[UIView beginAnimations:context:],来完成动画,虽然二者功能几乎完全相同,但使用前者在一些情况下会方便不少,这些内容可以参考官方文档View Programming Guide For iOS的Animation一节.
二者有一个值得新手注意的区别就是[UIView animateWithDuration:animations:]默认会禁止触摸,手势等的响应,这可以通过设置option选项来解决(直接引用StackOverFlow的一段了):

[cpp]  view plain copy
  1. UIViewAnimationOptions options = UIViewAnimationCurveLinear | UIViewAnimationOptionAllowUserInteraction;  
  2.    
  3. [UIView animateWithDuration:0.2 delay:0.0 options:options animations:^  
  4.  {  
  5.      highlightView.alpha = 1.0;  
  6.    
  7.  } completion:nil];  

就是这么一点事儿,害我走了不少弯路(我也是新手哈),在这里写一下,提示一下有可能遇到同样问题的人.

 

[cpp]  view plain copy
  1. [UIView animateWithDuration:duration  
  2.                           delay:0.0  
  3.                         options:UIViewAnimationCurveEaseInOut //设置动画类型  
  4.                      animations:^{  
  5.                          //开始动画  
  6.                          [self updateArrowBtnTitle:YES];  
  7.                          rotateView.transform = CGAffineTransformMakeRotation((stickToDegrees/180)*M_PI);  
  8.                      }  
  9.                      completion:^(BOOL finished){  
  10.                          // 动画结束时的处理  
  11.                      }];  

 

[UIView animateWithDuration:] 方法仅支持ios4.0及以上版本。如果要兼容以前的版本的话,还是需要使用 [UIView beginAnimation:] 方法

[cpp]  view plain copy
    1. [UIView beginAnimations:nil context:nil];  
    2.     // fade out  
    3.     helpImageBtn.alpha = 0.0f;  
    4.     // set animation did stop selector  
    5.     [UIView setAnimationDelegate:self];  
    6.     [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];  
    7.     [UIView commitAnimations];  
    8.   
    9.    - (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {  
    10.     if (self.retainedHelpImageBtn.superview) //先判断父视图再执行视图移除  
    11.         [self.retainedHelpImageBtn removeFromSuperview];  
    12.    }  






本文转自夏雪冬日博客园博客,原文链接:http://www.cnblogs.com/heyonggang/p/3494468.html,如需转载请自行联系原作者
目录
相关文章
|
运维 网络协议 Linux
腾讯T6-9首发“Linux内核源码底层原理开发进阶笔记”,差距不止一点点哦
腾讯T6-9首发“Linux内核源码底层原理开发进阶笔记”,差距不止一点点哦
|
云计算
阿里云短信费用价格表
阿里云短信费用价格表,阿里云短信服务价格表,阿里云短信0.032元一条,阿里云短信价格?阿里云短信怎么收费?阿里云短信多少钱一条,阿里云短信价格0.032元一条
448 0
|
新能源
【2023年第十三届APMCM亚太地区大学生数学建模竞赛】C题 中国新能源电动汽车的发展趋势 完整论文
2023年第十三届APMCM亚太地区大学生数学建模竞赛C题"中国新能源电动汽车的发展趋势"的完整论文
322 1
【2023年第十三届APMCM亚太地区大学生数学建模竞赛】C题 中国新能源电动汽车的发展趋势 完整论文
|
人工智能 算法 安全
AI伦理:探索智能时代的道德边界
【9月更文挑战第10天】随着AI技术的发展,我们步入了智能时代,AI的应用为社会带来便利的同时,也引发了伦理道德的讨论。本文探讨了数据隐私、算法偏见及系统透明度等伦理问题,并提出制定法规、行业自律、伦理审查及跨学科合作等策略,旨在确保AI技术的健康发展,构建智能、公平、安全的未来。通过共同努力,我们能在技术进步与道德边界间找到平衡点,推动社会持续进步。
|
前端开发 JavaScript API
如何在React中删除组件
【8月更文挑战第17天】如何在React中删除组件
385 1
|
Python
python之列表中常用的函数:append,extend,insert,pop,remove,del函数的定义与使用方法,元素是否在列表中的判断
python之列表中常用的函数:append,extend,insert,pop,remove,del函数的定义与使用方法,元素是否在列表中的判断
655 0
|
搜索推荐 JavaScript Go
小爱音箱改造篇(一)- 创意萌芽
小爱音箱改造篇(一)- 创意萌芽
314 2
|
存储 安全 搜索推荐
Cookie和Session的区别,99%的程序员都不知道的细节!
大家好,我是小米,在Web开发中,Cookie和Session是两种重要的状态管理工具。它们有着不同的存储位置、安全性和应用场景。本篇文章将详细解析它们的区别和应用,让你在开发过程中能够更加游刃有余。让我们一起深入了解吧!
378 1
|
关系型数据库 MySQL API
Flink教程(08)- Flink批流一体API(Sink示例)
Flink教程(08)- Flink批流一体API(Sink示例)
236 0
|
机器人 API Python
量化交易搬砖套利机器人开发合约代码详情示例
# 计算汇率调整后的股票价格 stock_data['Adjusted Price'] = stock_data['AAPL'] / exchange_rate_data['USD/CNY'] stock_data['Adjusted Price'] = stock_data['Adjusted Price'].fillna(0)