Core Animation - 寄宿图<二>

本文深入探讨了寄宿图层(maskToBounds、contentsRect、contentsCenter)的使用技巧及自定义绘图方法(CustomDrawing),并通过实例演示如何实现特定效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇博客中说道寄宿图里面用到的几个常用属性,这一篇继续把剩余的几个属性说完。
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
对于绘图和动画来说这只是冰山一角,还需要不断的学习来提高自己。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodingFire

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值