动画按照功能和场景可以分为
显示层的动画可能比较熟悉都是UIView层的动画
UIView动画实现方式
UIView动画实现方式有普通方式和Block方式,不过平常我们一般会直接使用Block的方式。简单,粗暴,管用!
而对于核心动画我们又可以分
核心动画的常用属性
- keyPath:可以指定keyPath为CALayer的属性值,并对它的值进行修改,以达到对应的动画效果,需要注意的是部分属性值是不支持动画效果的。
- 以下是具有动画效果的keyPath:
CATransform3D Key Paths : (example)transform.rotation.z
rotation.x
rotation.y
rotation.z
rotation 旋轉
scale.x
scale.y
scale.z
scale 缩放
translation.x
translation.y
translation.z
translation 平移
CGPoint Key Paths : (example)position.x
x
y
CGRect Key Paths : (example)bounds.size.width
origin.x
origin.y
origin
size.width
size.height
size
opacity
backgroundColor
cornerRadius
borderWidth
contents
Shadow Key Path:
shadowColor
shadowOffset
shadowOpacity
shadowRadius
- duration:动画的持续时间
- repeatCount:动画的重复次数
- timingFunction:动画的时间节奏控制
timingFunctionName的enum值如下:
kCAMediaTimingFunctionLinear 匀速
kCAMediaTimingFunctionEaseIn 慢进
kCAMediaTimingFunctionEaseOut 慢出
kCAMediaTimingFunctionEaseInEaseOut 慢进慢出
kCAMediaTimingFunctionDefault 默认值(慢进慢出)
- fillMode:视图在非Active时的行为
- removedOnCompletion:动画执行完毕后是否从图层上移除,默认为YES(视图会恢复到动画前的状态),可设置为NO(图层保持动画执行后的状态,前提是fillMode设置为kCAFillModeForwards)
- beginTime:动画延迟执行时间(通过CACurrentMediaTime() + your time 设置)
- delegate:代理
代理方法如下:
func animationDidStart(_ anim: CAAnimation) //动画开始
func animationDidStop(_ anim: CAAnimation, finished flag: Bool) //动画结束