视图的
frame
、bounds
和center
(对应于图层是position
)属性仅仅是存取方法,当操纵视图的frame
,实际上是在改变位于视图下方CALayer
的frame
,不能够独立于图层之外改变视图的frame
对于视图或者图层来说,
frame
并不是一个非常清晰的属性,它其实是一个虚拟属性,是根据bounds
,position
和transform
计算而来,所以当其中任何一个值发生改变,frame
都会变化。相反,改变frame
的值同样会影响到他们当中的值-
frame
、bounds
和center
的区别如下图所示:
-
图层的
anchorPoint
属性被暴露出来,anchorPoint
和contentsRect
属性类似,用单位坐标来描述。改变anchorPoint
,会改变图层的frame
。如下图三所示
最重要的是,图层的旋转是以anchorPoint
为旋转中心的。
5.图层具有一个叫做geometryFlipped
,类型为BOOL
的属性。设置这个属性为YES
后,它的子图层的坐标系会垂直翻转,即以左下角作为原点。若再将一个子图层的geometryFlipped
设置为YES
,则这个图层的子图层会再次翻转,相当于没有经过翻转了。
6.对于图层position
与anchorPoint
的理解参考这个链接(position
是layer
中的anchorPoint
点在superLayer
中的位置坐标):http://blog.csdn.net/yongyinmg/article/details/37927793。 anchorPoint
的改变,会影响图层旋转的效果。
7.正常情况下,图层是根据它们子图层的sublayers出现的顺序来进行绘制的。但通过改变zPosition可以改变图层的显示顺序。(zPosition不会改变事件传递的顺序)
8.图层的hitTest:
方法可以检测图层是否被点击。如果被点击的点包含在当前图层的子图层,就会返回最后一个包含该点的图层。如果子图层都没有包含,但当前图层包含该点,就会返回当前图层。否则,就返回nil
。