问题理解CALayer几何。需要帮助

时间:2012-03-15 13:31:37

标签: ios core-animation calayer

我正在尝试了解calayer几何,但有问题理解这个

  • 职位(我很清楚)

  • (Apple docs说)bounds属性是一个CGRect,它提供了图层(bounds.size)和origin(bounds.origin)的大小。

  

边界原点用作图形上下文的原点   你覆盖图层的绘图方法。

     

关于界限,我没有明白这一点。

  • (Apple docs说)
  

图层有一个隐含的框架,它是位置的函数,   bounds,anchorPoint和transform属性。设置新框架   矩形更改图层的位置和边界属性   适当地,但框架本身不存储。当一个新的框架   指定矩形的边界原点是不受干扰的,而   bounds size设置为框架的大小。图层的位置是   设置到相对于锚点的适当位置。当你拿到时   帧属性值,它是相对于位置计算的,   bounds和anchorPoint属性。

     

但这比Stanford university lecture slide 19

复杂得多
  • AnchorPoint 这最终玩边界......让我头晕目眩

需要帮助。

谢谢,问候。

1 个答案:

答案 0 :(得分:3)

每个观点都有自己的坐标系统。

任何观点的坐标系统的起源都是(0,0)。因此,任何观点的界限都是这个坐标系的“界限”即。 (0,0,宽度,高度)。

任何视图的位置都是根据父视图的坐标系或superview计算的。这是任何视图的框架,因此将是(x,y,宽度,高度),其中x和y表示父级坐标系统中左上角和左上角的位置。

ios文档使用此图片解释了这一点

This should explain things much better

对于最后一个,由于AnchorPoint在视图的“内部”,它在视图的坐标系中表示,因此必须使用边界,就像center属性一样。

对于CALayer也是如此,其中层的边界在它们自己的坐标系中定义,并且它们的帧由它们的超视图定义。有一些差异,有些是直接的,比如图层有更深的控制,你可以设置zordering并有一个锚点来处理变换等。有些是微妙的,例如CALayer的框架属性是不可动画(即在动画块中更改它没有效果)。

并且,我建议您尝试使用较小的程序来理解差异,除了试图从一两本书中获取所有内容,或者甚至是这样。