内容(比如设置为图片CGImageRef):@property(retain) id contents;
CALayer的疑点:
- CALayer是定义在QuartzCore框架中的,CGImageRef和CGColorRef两种数据类型是定义在CoreGraphics框架中的,而UICOlor和UIImage是定义在UIKit框架中的
- QuartzCore框架和CoreGraphics框架是可以跨平台使用的,在iOS和Mac OS X上都能使用,而UIKit只能在iOS中使用,所以为了保证移植性,QuartzCore不能使用UIImage和UIColor,只能使CGImageRef和CGColorRef
2.CALayer和UIView之间的联系
通过CALayer就能做出和UIImageView一样的界面效果;
CALayer和UIView都能实现相同的显示效果,那么究竟该选哪一个?比较如下:
a. UIView比CALayer多了一个事件处理的功能,CALayer不能处理用户的触摸事件,而UIView可以
b. 如果显示的东西需要和用户交互,用UIView;如果不需要和用户交互,用UIView和CALayer都可以
c. CALayer的性能会高一些,少了事件处理功能,更加轻量级
3.position和anchorPoint的作用
CALayer有2个非常重要的属性:
- position: @property CGPoint position;用来设置CALayer在父层上的位置,以父层的左上角为原点(0,0)
- anchorPoint: @property CGPoint anchorPoint;称为“定位点”、“锚点”,决定CALayer身上的哪个点会在 position属性所指的位置,以自己的左上角为原点(0,0),x,y取值范围都是0~1,默认值是(0.5,0.5)
隐式动画:每个UIView内部都默认关联着一个CALayer,称这个Layer为Root Layer(根层),所有的非Root Layer也就是手动创建的CALayer对象,都存在着隐式动画
隐式动画:对非Root Layer的部分属性进行修改时,默认会自动产生一些动画效果,这些属性称为Animatable Properties(可动画属性)
几个常见的Animatable Properties:
bounds:用于设置CALayer的宽度和高度,修改这个属性会产生缩放动画
backgroundColor:用于设置CALayer的背景颜色,修改这个属性会产生背景色的渐变动画
posotion:用于设置CALayer的位置,修改这个属性会产生平移动画
可以通过动画事务(CATransaction)关闭默认的隐式动画效果;
注意:UIImageView当中Image并不是直接添加在层上面的.这是添加在layer当中的contents里.我们设置层的所有
属性,它只作用在层上面.对contents里面的东西并不起作用.所以我们看不到图片有圆角的效果.想要让图片有圆角的效果.
可以把masksToBounds这个属性设为YES,当设为YES,把就会把超过根层以外的东西都给裁剪掉。
利用KVC对CALayer属性的操作:当需要做一些快速缩放,平移,二维的旋转时用KVC.比如: [_imageView.layer setValue:@0.5 forKeyPath:@"transform.scale"];快速的进行缩放.后面forKeyPath属性值不是乱写的.苹果文档中给了相关的属性.