4

在 CALayer 的 API 中,'position' 用于设置图层的位置。

根据我自己的测试,设置 bounds.origin 没有任何作用。我错过了什么吗?

4

2 回答 2

4

bounds.origin控制图层坐标系的原点相对于其超图层中的图层框架的位置。改变它有两个明显的效果:

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

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

您可能会发现阅读iOS 视图编程指南中的“查看几何和坐标系”核心动画编程指南中的“层对象定义它们自己的几何图形”很有帮助,尽管实际上它们都没有很好地讨论边界起源。

于 2013-06-25T19:13:01.903 回答
1

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

于 2013-06-25T19:10:39.853 回答