CoreAnimation(一)CALayer
CoreAnimation
算是一个大话题 ,要实现很多炫酷的动画,必须掌握它,掌握它之前 ,先来了解CALayer
— 图层
CALayer
我们平常都是用UIView
来构建应用,CALayer
是图层的一个属性 ,view.layer
. 它和UIview
一样都是一些被层级关系树管理的矩形块 ,如果玩儿过PS
,就会对图层的概念比较清晰 。CALayer
也可以包含一些一些内容(像图片,文本或者背景色),管理子图层的位置,也有一些方法和属性用来做动画和变换。和UIView
最大的不同是CALayer
不处理用户的交互。(这个可以通过hitTest
来判断是否点击以后会说)
CALayer
应该算式UIView
的内部实现细节 。对一些简单的需求来说,我们确实没必要处理CALayer
,因为苹果已经通过UIView
的高级API间接地使得动画变得很简单。 但是这种简单会不可避免地带来一些灵活上的缺陷。如果你略微想在底层做一些改变,或者使用一些苹果没有在UIView
上实现的接口功能,这时除了介入Core Animation
底层之外别无选择。
下面我们看看CLayer
的一些基本属性:
1、contents
这个属性的类型被定义为id,意味着它可以是任何类型的对象。你可以给他赋任意值,编译不会报错 , 但是实践中如果你赋值的不是CGImage 。那得到的就是空白。
view1.layer.contents = UIImage(named: "xhh")?.CGImage
可以通过设置contentsGravity
设置其显示模式 。相当于UIView
的contentMode
- kCAGravityCenter
- kCAGravityTop
- kCAGravityBottom
- kCAGravityLeft
- kCAGravityRight
- kCAGravityTopLeft
- kCAGravityTopRight