Core Animation:布局

2016-02-22  本文已影响37人  黄龙辉
  1. 视图的frameboundscenter(对应于图层是position)属性仅仅是存取方法,当操纵视图的frame,实际上是在改变位于视图下方CALayerframe,不能够独立于图层之外改变视图的frame

  2. 对于视图或者图层来说,frame并不是一个非常清晰的属性,它其实是一个虚拟属性,是根据boundspositiontransform计算而来,所以当其中任何一个值发生改变,frame都会变化。相反,改变frame的值同样会影响到他们当中的值

  3. frameboundscenter的区别如下图所示:

    (图一)frame、bounds和center对比
    (图二)旋转后frame、bounds和center对比
  4. 图层的anchorPoint属性被暴露出来,anchorPointcontentsRect属性类似,用单位坐标来描述。改变anchorPoint,会改变图层的frame。如下图三所示

    (图三)改变anchorPoint后,frame值对比
    最重要的是,图层的旋转是以anchorPoint为旋转中心的。

5.图层具有一个叫做geometryFlipped,类型为BOOL的属性。设置这个属性为YES后,它的子图层的坐标系会垂直翻转,即以左下角作为原点。若再将一个子图层的geometryFlipped设置为YES,则这个图层的子图层会再次翻转,相当于没有经过翻转了。

6.对于图层positionanchorPoint的理解参考这个链接(positionlayer中的anchorPoint点在superLayer中的位置坐标):http://blog.csdn.net/yongyinmg/article/details/37927793anchorPoint的改变,会影响图层旋转的效果。

7.正常情况下,图层是根据它们子图层的sublayers出现的顺序来进行绘制的。但通过改变zPosition可以改变图层的显示顺序。(zPosition不会改变事件传递的顺序)

8.图层的hitTest:方法可以检测图层是否被点击。如果被点击的点包含在当前图层的子图层,就会返回最后一个包含该点的图层。如果子图层都没有包含,但当前图层包含该点,就会返回当前图层。否则,就返回nil

上一篇 下一篇

猜你喜欢

热点阅读