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]; // 提交事务

(一二〇)CALayer的一些特性的更多相关文章

  1. 2017年3月14日-----------乱码新手自学.net 之Authorize特性与Forms身份验证(登陆验证、授权小实例)

    有段时间没写博客了,最近工作比较忙,能敲代码的时间也不多. 我一直有一个想法,想给单位免费做点小软件,一切思路都想好了,但是卡在一个非常基础的问题上:登陆与授权. 为此,我看了很多关于微软提供的Ide ...

  2. 少儿编程|Scratch编程教程系列合集,总有一款适合你

    如果觉得资源不错,友情转发,贵在分享!!! 少儿编程Scratch: 少儿编程Scratch第一讲:Scratch完美的初体验少儿编程Scratch第二讲:奇妙的接球小游戏少儿编程Scratch第三讲 ...

  3. UIView CALayer 的区别

    UIView与CALayer的区别,很详细 研究Core Animation已经有段时间了,关于Core Animation,网上没什么好的介绍.苹果网站上有篇专门的总结性介绍,但是似乎原理性的东西不 ...

  4. UIView与CALayer的区别

    1.UIView相比CALayer最大区别是UIView可以响应用户事件,而CALayer不可以.UIView侧重于对显示内容的管理,CALayer侧重于对内容的绘制. 2.UIView和CALaye ...

  5. CALayer总结(二)

    1.CATransaction 事务: UIView有两个方法,+beginAnimations:context:和+commitAnimations,和CATransaction的+begin 和+ ...

  6. iOS开发——UI篇OC篇&UIView/UIWindow/UIScreen/CALayer

    UIView/UIWindow/UIScreen/CALayer 1.UIScreen可以获取设备屏幕的大小. 1 2 3 4 5 6 7 // 整个屏幕的大小 {{0, 0}, {320, 480} ...

  7. UIView与CALayer的区别,很详细

    研 究Core Animation已经有段时间了,关于Core Animation,网上没什么好的介绍.苹果网站上有篇专门的总结性介绍,但是似乎原理性的东西不多,看得人云山雾罩,感觉,写那篇东西的人, ...

  8. UIView和CALayer有什么关系

    view是对layer的一种封装,你对view的很多操作事实上是对layer的操作,之所以会出现这两个东西是因为1.view支持很多手势的交互,你所操作iphone的各种点击,拖动等等.2.layer ...

  9. 【好程序员笔记分享】——UIView与CALayer详解

    -iOS培训,iOS学习-------型技术博客.期待与您交流!------------ UIView与CALayer详解 研究Core Animation已经有段时间了,关于Core Animati ...

随机推荐

  1. POJ - 3264:Balanced Lineup

    ST表模版 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring&g ...

  2. hdu 3948 后缀数组

    The Number of Palindromes Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 262144/262144 K (J ...

  3. 【Bzoj 1835 基站选址】

    基站选址的区间里隐藏着DP优化的机密…… 分析:       不论是做过乘积最大还是石子合并,或者是其他的入门级别的区间DP题目的人呐,大米并认为读题后就能够轻松得出一个简洁明了的Dp转移方程.    ...

  4. 【poj 1087 a plug for UNIX】

    在大米饼的帮助下,终于找到了大米饼程序中如同大米饼一般的错误! 考点在问题转化,然后就跑一个你喜欢的最大流算法(二分图可以啵?) 再来一个例子吧: [纯手绘大米饼图片] 其中有的边权是1,否则就是in ...

  5. break用法

    break用于循环,则是终止循环 break用于switch,则终止switch break不能用于if.当break用于if语句,但是终止的是if的外部循环 break 只能终止最近的循环

  6. Linux下运行当前目录需要加./的原因

    在Windows下运行当前目录的文件,可以直接输入文件全名,就能够运行该文件.但对于Linux则必须加上./文件名才能运行.对于这一点表示很疑惑,最后查阅了资料才弄明白. 原因如下: 1.在Windo ...

  7. HashSet与TreeSet

    1.TreeSet 是二差树实现的,Treeset中的数据是自动排好序的,不允许放入null值 2.HashSet 是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个nu ...

  8. Lucene——Field.Store(存储域选项)及Field.Index(索引选项)

    Field.Store.YES或者NO(存储域选项) 设置为YES表示或把这个域中的内容完全存储到文件中,方便进行文本的还原 设置为NO表示把这个域的内容不存储到文件中,但是可以被索引,此时内容无法完 ...

  9. VueJs(4)---V-model指令

    V-model指令 摘要   限制: v-model只能用在:<input>    <select>    <textarea>  <components&g ...

  10. init,initialize,initWithFrame,initWithCoder,awakeFromNib等区别

    1.init 与initialize 对于iOS程序,创建几个类对象,就会调用几次init.下面分别重写 举例如下: 创建一个Person类,分别重写initialize和init方法 #import ...