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的方式绘制圆角图片,但是会增加内存。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值