上一篇博客中说道寄宿图里面用到的几个常用属性,这一篇继续把剩余的几个属性说完。
1.maskToBounds
类似视图中的cliksToBounds这个属性,他们的功能是一样的,超出父视图的部分会被截取掉。
2.contentsRect
我这里通俗的来说这个属性,它把整个Screen或者父视图作为一个坐标系,大小为{0,0,1,1}整个视图都是可见的,设置的contentRect代表其中的某一块,系统会将这一块的内容拉伸来填充整个区域。
3.contentsCenter
图层的contentCenter在这里和视图的center的功能并不一样,contentCenter代表一个区域,我们可以定义这个区域的某部分用于另一个区域,这是一个奇特的属性,博主按照书上的方法试了,分别用了和图片一样大的视图,大于图片,宽高成比例图和小于图片但宽高成比例的视图和不规则的视图进行尝试,从效果来看图片填充了视图那块区域,并被拉伸了,需要注意的一点是,拉伸的为{x,x,x,x}表示的这块区域,其他部分未拉伸。这里比较难理解,但是大家可以尝试通过代码来理解,看效果就很容易明白了。
代码链接地址:​​​https://github.com/codeliu6572/ContentRect​​,不懂的可以回复留言。

4.Custom Drawing
设置寄宿图我们除了直接通过图片来设置之外也可以通过Core Graphics绘制的方法来实现,继承与UIView,通过drawRect方法。这个方法很耗费内存,所以我们新建的继承于UIView的类这个方法都会被注释掉,当绘制时它的大小等于寄宿图的大小乘以contentScale,CALayer是一个非正式协议,绘制时我们只需要调用想用的方法就可以,不需要去引用,比较常用的两个方法就是:

-(void)displayLayer:(CALayerCALayer *)layer;
//如果上面的方法不实现,就会尝试调用下面的方法
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx;

博主按照书中讲的方法绘制了一下,发现还是很不错的,附上代码:
​​​https://github.com/codeliu6572/drawLayer​​​
对于绘图和动画来说这只是冰山一角,还需要不断的学习来提高自己。