本节将介绍CALayer与Core Animation基础,找找经过Layer操做动画的感受,你将学到如何移动、隐藏显示Layer的方法swift
Layer中不少动画属性的使用方法与View相似,例如frame、position、opacity等,另外还提供了border、shadow等新属性,接下来咱们来看看Layer中给了咱们什么能够动画变化的属性动画
bound
Layer的范围code
position
Layer在父Layer中的的位置,能够分别修改x、y
-transform
改变中国属性能够移动、缩放、旋转Layer,甚至能够加入3D动画orm
borderColor
边框颜色对象
borderWidth
边框宽度ci
cornerRadius
角的弧度,能够实现圆角animation
shadowOffset
改变这个属性能够改变阴影与Layer的远近it
shadowOpacity
改变这个属性能够改变阴影的显示io
shadowPath
改变Layer shadow的形状,能够加入各类各样的3D效果form
shadowRadius
改变阴影的模糊程度,在模拟物体朝向屏幕运动或远离屏幕的动画中使用较多
content
改变这个属性能够改变Layer内含的TIFF、PNG原始数据
mask
改变这个属性能够改变图像上的遮盖
opacity
改变内容的透明度
以上的属性就已经足够你实现一些基于Layer的动画了,下面咱们经过Demo练习一下
此次咱们的Demo利用Layer Animation替换以前登陆页面Demo中的View Animation
咱们从heading开始,在viewWillAppear
及viewDidAppear
方法中删除有关代码(对于控件初位置的设定在动画中实现)
咱们在在viewDidAppear
方法中添加动画
let flyRight = CABasicAnimation(keyPath: "position.x") flyRight.fromValue = -view.bounds.size.width/2 flyRight.toValue = view.bounds.size.width/2 flyRight.duration = 0.5
CoreAnimation中的对象都是一些简单的数据模型,咱们只需实例化并设置相应的数据便可
一个CA实例描述了具体的Layer动画,你能够随时使用这个动画
这些动画实例并不急于具体的Layer,你能够在须要的时候重用代码,每次添加动画时都会建立它的一份拷贝
对于一个CA对象,你能够很方便的经过keypath参数具体说明动画的属性
随后咱们设置了fromValue
、toValue
属性调整了动画的开始与结束
最后咱们设置了动画进行的时间
经过上面的代码咱们已经建立了动画,如今咱们来把动画添加到具体的layer上
heading.layer.addAnimation(flyRight, forKey: nil)
咱们这里调用的addAnimation(_: forKey:)方法用于将CA对象建立一个拷贝而且应用在layer上,第二个参数forKey仅仅用于动画的使用者,经过这个参数能够实现改变、中止这个动画等操做。