关于Core Animation
来源:互联网 发布:淘宝双十一一元秒杀 编辑:程序博客网 时间:2024/04/28 09:49
层次
Core Animation
是不会修改CALayer
的属性的,它维护了三个平行的layer
层次结构: model tree
(模型层树)、presentation tree
(表示层树)、rendering tree
(渲染树).模型层反应了我们能直接看到的layer
的状态,表示层是动画正在表现的状态的近似值,渲染层对Core Animation
是私有的。
保持动画后状态
保持动画完成后状态的两种方法: 一:设置removedOnCompletion
为NO
,并设置fillMode
为kCAFillModeForward
。二:在addAnimation:
后将layer的属性置为动画后的属性。方法二性能优于方法一,如果将已完成的动画保持在 layer 上时,会造成额外的开销,因为渲染器会去进行额外的绘画工作。
动画的重用
addAnimation:
时layer
会拷贝一份动画对象,之后动画对象再发生改变,将不会影响原图层的动画。
[firstLayer addAnimation: animation];animation.beginTime = CACurrentMediaTime() + 0.5;[secondLayer addAnimation: animation];
对动画开始时间的修改将只影响第二个图层,这可以让我们有效地重用动画。
动画的 additive
属性为YES
时,动画中属性的值会叠加到modelLayer
上来产生presentationLayer
,也就是在原图层属性的基础上加上动画的属性值,这样动画中可以不必考虑原图层的具体属性值。
例如一个左右移动的关键帧动画:
CAKeyframeAnimation *animation = [CAKeyframeAnimation animation];animation.keyPath = @"position.x";animation.values = @[ @0, @10, @-10, @10, @0 ];animation.duration = 0.4;animation.additive = YES;[layer addAnimation:animation forKey:@"shake"];
动画中的属性值,不需要带入layer
的属性去计算最左、最右和中间点的坐标,而是直接叠加在layer
的属性上。这样也有利于动画的重用。
rotationMode
使用path
的关键帧动画,可以设置rotationMode
为kCAAnimationRotateAuto
让视图根据角度旋转。
rotationMode
为kCAAnimationRotateAuto
rotationMode
为nil
参考资料:
Obj中国
卷首语
动画解释
- Core Animation--1.关于Core Animation
- 关于Core Animation
- 关于Core Animation的一些初步探索
- 关于Core Animation的一些初步探索
- Core Animation 中关于timeOffset的理解
- core animation
- Core Animation
- Core Animation
- Core Animation
- Core Animation
- Core Animation
- Core Animation
- Core Animation
- Core Animation
- Core Animation
- Core Animation
- Core Animation
- Core Animation
- FFmpeg中AVPacket处理函数av_free_packet()和av_packet_free()的区别以及用法
- struts2路径问题
- JedisPoolConfig中方法解读
- Python绝技笔记--------python操作注册表来获取之前连接的网络信息
- 八皇后
- 关于Core Animation
- 微服务实战(二):使用API Gateway
- 从程序员的角度分析微信小程序
- FFMpeg 3.2移植到android遇到的各种坑,再一次总结
- Java实现磁盘调度算法
- Spark 异常集锦
- Android中的线程间通信(三)
- 最大公约数
- UDP的简单封装