CALayer_01

来源:互联网 发布:mysql 建立索引语句 编辑:程序博客网 时间:2024/06/05 02:51

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源码

0 0
原创粉丝点击