CALayer ---- 属性
2018-07-27 本文已影响15人
火之夜工作室
一 . CALayer 属性列表如下
二 . UIView和CALayer的区别和选择
UIView和CALayer区别
1.在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),CALayer 在背后提供内容的绘制和显示;两者都有树状层级结构,layer 内部有 SubLayers,View 内部有 SubViews.但是 Layer 比 View 多了个AnchorPoint(锚点)。
2.当UIView需要显示到屏幕上时(UIView 做为 Layer 的 CALayerDelegate,View 显示内容由CALayer 的 display),会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示。
换句话说,UIView本身不具备显示的功能,是因为它内部的图层(CALayer)才有显示功能
3.Layer 的 frame是由它的 bounds、position、anchorPoint 和 transform 共同决定的;View 的 frame只是简单的返回 Layer的 frame,同样 View 的 bounds 和 center 也是返回 Layer 的一些属性。
4.UIView 多了一个事件处理的功能,也就是说UIView 可以处理用户的触摸事件,而 CALayer 不可以。
UIView和CALayer选择
通过CALayer,也能做出和 UIImageView 一样的效果,相比较UIView多了一个事件处理的功能;
所以,如果显示出来的东西需要跟用户进行交互的话,用UIView;如果不需要进行交互,用UIView和CALayer都可以;
当然,CALayer 的性能会高一些,因为它少了事件处理的功能,更轻量级(实际开发中还是建议使用UIView,可扩展性强);