一、CALayer 基本使用

什么是CALayer

* 在iOS系统中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。

* 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个层。

* 在创建UIView对象时,UIView内部会自动创建一个层(即CALayer对象),通过UIView的layer属性可以访问这个层。当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的层上,绘图完毕后,系统会将层拷贝到屏幕上,于是就完成了UIView的显示。

* 换句话说,UIView本身不具备显示的功能,是它内部的层才有显示功能。

 

UIView的详细显示过程

* 当UIView需要显示时,它内部的层会准备好一个CGContextRef(图形上下文),然后调用delegate(这里就是UIView)的drawLayer:inContext:方法,并且传入已经准备好的CGContextRef对象。而UIView在drawLayer:inContext:方法中又会调用自己的drawRect:方法

* 平时在drawRect:中通过UIGraphicsGetCurrentContext()获取的就是由层传入的CGContextRef对象,在drawRect:中完成的所有绘图都会填入层的CGContextRef中,然后被拷贝至屏幕

 

看这里

http://www.cnblogs.com/mjios/archive/2013/04/13/3019335.html

http://www.cnblogs.com/mjios/archive/2013/04/14/3019728.html

http://www.cnblogs.com/mjios/archive/2013/04/14/3020291.html

http://www.cnblogs.com/mjios/archive/2013/04/14/3020975.html

 

关闭隐式动画

[CATransaction begin];

[CATransaction setDisableActions:YES];

self.layer.position = CGPointMake(300, 300);

[CATransaction commit];

 

posted @ 2016-04-12 09:44  人生路1/5  阅读(189)  评论(0)    收藏  举报