CALayer_01

CALayer

本期干货陈小贱的gitHub源码

    当我们提到Layer时,我们总会想到UIView。很多初学者并不了解,为什么iOS在为我们提供了UIView的同时,又为我们提供了CALayer?
            接触过iOS开发的同学都知道,视图(View)用于在手机屏幕上显示一个矩形区域,并能够响应用户的输入。一个视图可以管理它的所有子视图。
    对于CALayer来讲,它其实和UIView相似。它们最大的不同就是,CALayer不响应用户交互,而是来做高级动画,即UI增强效果的动画。
    那么CALayer可以做哪些事情?

    1.阴影,圆角,带颜色的边框
    2.3D变换
    3.非矩形范围
    4.透明遮罩
    5.多级非线性动画

    而这些事情我们的UIView并不能办到。


    接下来比较UIView和CALayer吧。

    UIView有`frame`,`bounds`和`center`,`CALayer`对应地叫做`frame`,`bounds`和`position`。

    `frame`代表了图层的外部坐标(也就是在父图层上占据的空间),`bounds`是内部坐标({0, 0}通常是图层的左上角),`position`代表了相对于父图层的锚点`anchorPoint`的位置(大家暂时可以将锚点想象成中心点)

    举一个简单的例子:
    在没有做任何形变的状态下,假设一个图层的frame = (10,30,60,30),那么其bounds=(0,0,60,30),position = (40,45)

    关于 锚点 (`anchorPoint`)

    锚点`anchorPoint`用单位坐标来描述,也就是图层的相对坐标,图层左上角是{0, 0},右下角是{1, 1},因此默认坐标是{0.5, 0.5}。anchorPoint可以通过指定x和y值小于0或者大于1,使它放置在图层范围之外。

    例子:
    比如说,默认锚点 {0.5, 0.5},现将锚点改成 (0,0),那么图层将会向视图的右下角移动,代码如下所示:
     CALayer *layer = [[CALayer alloc] init];
    layer.frame = self.testView.bounds;
    layer.backgroundColor = [UIColor redColor].CGColor;
    layer.anchorPoint = CGPointMake(0, 0);//默认anchorPoint={0.5, 0.5}
    [self.testView.layer addSublayer:layer];

    关于电子钟的示例:
    关键代码:
      //改变锚点,实质适应
self.second.layer.anchorPoint = CGPointMake(0.5f, 0.9f);
self.minute.layer.anchorPoint = CGPointMake(0.5f, 0.9f);
self.hour.layer.anchorPoint = CGPointMake(0.5f, 0.9f);

note:git上面有源码,欢迎下载!下面会接着给大家分享关于layer的UI增强动画,欢迎期待!

陈小贱的gitHub源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值