在CALayer的API中,'position'用于设置图层的位置。
根据我自己的测试,设置bounds.origin不会做任何事情。我错过了什么吗?
答案 0 :(得分:4)
bounds.origin
控制图层坐标系原点的位置,相对于超层中图层的帧。改变它有两个明显的效果:
图层子图层的位置。例如,滚动UIScrollView
时,滚动视图不会更改其子视图的帧。它只是改变了它的bounds.origin
。我建议设置一个带有滚动视图的玩具应用程序,并通过计时器或其他触发器执行NSLog("scroll view bounds = %@", NSStringFromCGRect(scrollView.bounds));
以了解正在发生的事情。
drawInContext:
中图形上下文坐标系的原点。通常,您会在视图的drawRect:
方法中看到此效果。 CGContext
内的drawRect:
self.bounds.origin
将由{{1}}翻译。
您可能会发现阅读“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)
更改边界矩形会更改图层本身坐标系中内容的位置和大小。更改框架(或位置)会更改其超级图层坐标系中图层的位置。通常你只想改变框架而不是边界。