Core Animation,不同于UIView动画那么简单快捷。但可高效的控制动画效果,比如停止动画,控制动画节奏。
在开始之前,先做一些基本了解。
它属于CoreGraphics框架,在CALayer层操作。
是不是有些恍然大悟了呢。
总结一下CALayer和UIView有什么区别呢?
UIView:用户交互,界面展示
真正绘制界面的类是layer
CALayer属于QuartzCore框架(跨平台的).
mac os:交互上面:APPKIT,通过鼠标键盘交互,NSview
iOS:触摸,UIKit,UIVIew
相同点:同一种绘制方式(CALayer)
不同点:不同交互方式
UIView封装了layer
frame,background:layer对应的属性
<修改backgroundColor其实就是修改对应的layer的backgroundColor,模型层(存储数据和读取)>
总结:UIView负责处理用户交互,layer负责绘制内容。我们访问和设置的UIView的这些负责显示的属性实际就是访问和设置layer对应的属性,
只不过UIView把他封装了起来。
补充一下CALayer的层级关系:
layer的层次结构Layer Tree,这种层次结构分为以下三种:
Model Tree :也就是我们通常所说的layer,也可以通过modelLayer获取
Presentation Tree:呈现出来的layer,也就是我们做动画时你看到的那个layer,可以通过layer.presentationLayer获得。
Render Tree :私有,无法访问。主要是对Presentation Tree数据进行渲染,并且不会阻塞线程。
核心动画的几个类:
屏幕快照 2018-09-25 10.34.48.png
参考:
http://www.cocoachina.com/ios/20170623/19612.html
自定义转场动画
屏幕快照 2018-09-25 11.23.12.png
网友评论