首先UIView可以响应事件,layer不可以。
1、在屏幕上能看得见摸得着的东西基本上都是UIView,如:按钮、文本标签、文本输入框,图标等等,都是UIView;
2、其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层;
3、当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是UIView的显示就完成了;
4、UIView本身不具备显示的功能,是它内部的层才有显示功能,对比CALayer,UIView多了一个事件处理的功能;
5、如果显示出来的东西需要跟用户交互的话,用UIView,如果不需要跟用户交互,用UIView和CALayer都可以;
6、当然,CALayer的性能会高一点,因为它少了事件处理的功能,更轻量级;
7、所有非RootLayer,也就是手动创建的CALayer对象,都存在着隐式动画;
8、CAL ayer有position和anchorPoint;
UIView封装的动画执行完毕之后不会反弹,即如果是通过CALayer核心动画改变layer的位置状态,表面上看虽然已经改变了,但是实际上它的位置是没有改变的。
CALayer有两个非常重要的属性:position和anchorPoint。
其中position用来设置CALayer在父层中的位置,以父层的左上角为原点(0,0)。
anchorPoint:称为“定位点” “锚点”,决定着CALayer身上的哪个点会在position属性所指的位置,以自己的左上角为原点(0,0),它的x,y取值范围都是0~1,默认是(0.5, 0.5)。
网友评论