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
- CALayer_01
- 性能测试监控数据 -- liunx服务器性能参数 -sysstat
- MyBatis中#和$的区别
- android使用SoundPool 播放短音效
- myeclipse颜色设置问题
- 表单验证(email,手机号,座机等)
- CALayer_01
- 了解Spring @Around使用及注意
- Objective-C中的instancetype和id区别
- Maven坐标和依赖(三)
- Hive表导入Elasticsearch
- 关于URL编码
- 使用单例类进行背景音乐播放
- android 照片旋转并保存
- leetcode -- Find the Duplicate Number-- 经典重点