UIView和CALayer的区别和联系

UIView 继承自UIResponder 可以添加点击事件,可以通过.layer属性获取CALayer,View 的显示内容由内部的 CALayer 的 display

CALayer 继承自NSObject没有相应事件处理
Layer 比 View 多了个AnchorPoint属性,transform动画以它为中心点旋转,默认是(0.5,0.5)

他们的frame和bounds通用,都是不一样的。center->position

positon.x=frame.origin.x+anchorPoint.x*bounds.width
positon.y=frame.origin.y+anchorPoint.y*bounds.height

positon和anchorPoint互互不影响,修改anchorPoint和positon都会改变frame,修改frame只会改变position

 

cornerRadius属性影响layer显示的background和border,但对layer的contents不起作用。所以一个UIImageView的image不为空,设置layer的cornerRadius属性,是看不出显示圆角效果的,因为image是layer的contents部分,只有将layer的masksToBounds也设置为YES,才能绘制出圆角效果。

layer.cornerRadius不会触发离屏渲染,该属性只是对边框和背景颜色起作用,适用于内部没有其他控件的view。如果masksToBounds设置为YES,会触发离屏渲染,少量圆角设置可以使用这种方法。

CAShapeLayer+UIBezierPath会触发离屏渲染。

最好的方式就是使用Core Graphics的方式绘制圆角图片,但是会增加内存。


 

你可能感兴趣的:(移动开发)