设置CALayer的bounds.origin有什么作用?

时间:2013-06-25 19:00:04

标签: ios objective-c

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

根据我自己的测试,设置bounds.origin不会做任何事情。我错过了什么吗?

2 个答案:

答案 0 :(得分:4)

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

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

  2. drawInContext:中图形上下文坐标系的原点。通常,您会在视图的drawRect:方法中看到此效果。 CGContext内的drawRect: self.bounds.origin将由{{1}}翻译。

  3. 您可能会发现阅读“View Geometry and Coordinate Systems” in the View Programming Guide for iOS“Layer Objects Define Their Own Geometry” in the Core Animation Programming Guide会很有帮助,但实际上他们都没有对边界来源进行过很好的讨论。

答案 1 :(得分:1)

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