iOS之Transition动画
来源:互联网 发布:voa英语听力软件下载 编辑:程序博客网 时间:2024/05/12 10:52
原文:http://www.cnblogs.com/tekkaman/archive/2012/11/05/2755688.html
第一眼看Quartz2D的动画会觉得神奇兼奇怪,为什么苹果会规定Transition动画要按照下面的样例写:
[UIView beginAnimations:nil context:nil]; [UIView setAnimationCurve:UIViewAnimationCurveLinear];//动画变化曲线,线性渐变 [UIView setAnimationDuration:2.0];//动画持续时间 [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];//动画过渡 static int mmm = 0; mmm++; [self.view setBackgroundColor: (mmm%2) ? [UIColor whiteColor] : [UIColor blackColor]]; [UIView setAnimationDelegate:self]; [UIView commitAnimations];
苹果官方文档写到:把view属性变化的代码放置于beginAnimation和commitAnimation之间,即可自动实现动画效果。
那苹果的框架是如何捕获或感知到这中间的代码块的?先看看CoreAnimation中的动画框架解释。
当设置一个layer的值的时候,Layer-Tree(L-Tree)立即改变,而展示的Presentation Tree是由插值渐变。所以CoreAnimaton对代码块的捕获实际上是用Layer-Treey记录下了变化的东西,然后在动画线线程中把P-Tree渐变到L-Tree。
再看CATransition,这个东西没有对Layer的属性做任何的改变,只是让一个Layer执行1个动画。而这个动画会取2个值,1个是转换前的值,另1个是转换后的值。为了保证能够截取到正确的2个值,要求当值变化后,立即进行截取(CommitAnimation)。所以苹果建议动画块放在commitAnimation之前。实际上,放在commitAnimation之后也是可以的,因为当commitAnimation时,动画线程中的动画还没有执行,会延迟1段时间。但是如果动画线程快于主线程的执行,则获得不到正确的transition效果。
所以动画的实质意义是,从动画执行开始,属性变化时间变为UIAnimation指定时间(默认UIView为立即变化,CALayer为渐变),动画即是改变了Layer属性的变化时间~这就是核心,CoreAnimation以及Quartz2D的所以其它效果都是在这一基础上而搭建起来的。
- iOS之Transition动画
- css动画之transition
- 【代码笔记】iOS-Transition动画
- css3 动画之transition,animation
- iOS之Custom UIViewController Transition
- transition动画
- 图片旋转之二-transition动画
- CSS3之transition和animation动画
- React动画之react-transition-group使用
- React动画之react-transition-group使用
- Android学习笔记之Transition——Transition简单动画(1)
- css3动画属性详解之transform、transition、animation
- CSS动画效果——transition之渐变方块
- css3动画属性详解之transform、transition、animation
- Css3 Transition动画效果
- css 动画效果 -- transition
- CSS Transition (变换动画)
- CSS3 动画 Transition
- hdu-1285-确定比赛名次
- iOS内存使用陷阱
- 在Eclipse中配置NDK自动编译环境builders
- RHEL6下设置IP地址总结
- 菜鸟的安卓实习之路---- setClickable和setEnabled
- iOS之Transition动画
- UITextField的总结
- 语言和音频圣经翻译
- 章粉煤灰研究生(土木工程)课程的学生
- linux kvm 网卡Bridge设置
- 移动演播室帮助音频制作学校青鸟
- 移动数据分析,iPad上的游戏规则改变
- 移动应用程序开发运动应用增长
- 移动分析