(一二〇)CALayer的一些特性

1.每个View都自带一个CALayer,称为rootLayer,layer可以和实现与View一样的显示功能,但是它不继承UIResponse,也就是说它无法处理事件,所以为了处理事件还是要用View,如果只是显示,可以选择layer。

下面的代码实现了自定义一个layer添加到控制器的rootLayer上,layer可以正常显示。

CALayer *layer = [CALayer layer];
layer.bounds = CGRectMake(0, 0, 200, 200);
layer.position = CGPointMake(200, 200);
layer.backgroundColor = [UIColor redColor].CGColor;
[self.view.layer addSublayer:layer];

需要注意的是,CALayer来自QuartzCore框架,是跨平台的,而UIColor、UIImage等来自UIKit框架,仅限于iOS系统使用,因此要设置背景、layer内容,一定要进行转换。

下面的代码实现了设置layer的内容为一张图片:


layer.contents = (__bridge id)[UIImage imageNamed:@"header.png"].CGImage;

2.Layer还有一个锚点属性,可以设置postion的参考点,锚点分为x、y坐标,范围是0~1,(0,0)代表position从图片左上角开始计算(默认值),(0.5,0.5)则代表以图片中心点开始计算,这时候postion就相当于center属性,以此类推,通过锚点属性可以简化坐标运算。


3.Layer还具有隐式动画特性,所谓隐式动画,指的是如果UIView上有除rootLayer以外的layer,当那个layer的一些可执行动画的属性被修改时,会自动执行动画,例如transform。如果要消除隐式动画,需要通过提交事务的方式声明,下面的代码实现了对隐式动画的取消:

[CATransaction begin]; // 开启一个事务
[CATransaction setDisableActions:YES];
_layer.transform = CATransform3DMakeTranslation(100, 100, 0);
[CATransaction commit]; // 提交事务


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值