iOSiOS带我飞

CALayer

2015-07-16  本文已影响1191人  Ljson

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

当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示。

换句话说:UIView其实不具备显示功能,而是靠CALayer来显示。

CALayer常见的属性

position和anchorPoint

CALayer有2个非常重要的属性:positionanchorPoint

几个具体的例子来说明position和anchorPoint

position和anchorPoint各代表什么 例子1 例子2 例子3 例子4 例子5

现在明白了:

手动创建CALayer

[CALayer layer]

[self.view.layer addSublayer:]

view中的CALayer

在一个view中,我们可以通过view.layer拿到view的rootLayer(根图层),但是在view中不仅仅只有一个rootLayer。

隐式动画

每一个UIView内部都默认关联着一个CALayer,我们可用称这个Layer为Root Layer(根层)

所有的非Root Layer,也就是手动创建的CALayer对象,都存在着隐式动画

关于CALayer的疑惑

UIView和CALayer的选择

既然CALayer和UIView都能实现相同的显示效果,那究竟该选择谁好呢?

其实,对比CALayer,UIView多了一个事件处理的功能。也就是说,CALayer不能处理用户的触摸事件,而UIView可以。
因为:UIView继承自UIResponder,而CALayer继承自NSObject。

所以:

上一篇下一篇

猜你喜欢

热点阅读