2013-06-25 51 views

回答

4

bounds.origin控制图层坐标系的原点相对于其上层图层的框架。改变它有两个可见的效果:

  1. 层的子层的位置。例如,当您滚动UIScrollView时,滚动视图不会更改其子视图的框架。它只是更改其bounds.origin。我建议设置一个带有滚动视图的玩具应用程序,并使用定时器或其他触发器来执行NSLog("scroll view bounds = %@", NSStringFromCGRect(scrollView.bounds));,以了解发生了什么。

  2. 图形上下文坐标系的原点drawInContext:。通常你会在视图的drawRect:方法中看到这种效果。您的CGContext里面的drawRect:已被翻译self.bounds.origin

您可能会发现它有助于了解“View Geometry and Coordinate Systems” in the View Programming Guide for iOS“Layer Objects Define Their Own Geometry” in the Core Animation Programming Guide,但真的没有人有界限起源的很好的讨论。

+0

您给出的描述是frame.origin。让我知道如果我错过了什么。 –

+0

'frame.origin'影响图层在其上层的位置。 'bounds.origin'会影响图层子图层和内容的位置。 –

+1

您对#2错误。一个图层的bounds.origin不会影响其内容的位置,而只会影响其子图层的位置。例如,如果将CGImage分配给layer.contents,然后偏移bounds.origin,图像将不会移动。 – algal

1

更改边界矩形会更改图层自身坐标系中内容的位置和大小。改变框架(或位置)可以改变图层在其超级图层坐标系中的位置。通常你只想改变框架,而不是边界。

相关问题