UIView具有属性frame, bounds,center和origin, 并且它们似乎都是相互关联的。大多数时候,我frame会在设置 a 的位置和大小时进行处理UIView。我知道这frame是使用全局坐标系并bounds使用本地视图的坐标(因此它的 x 和 y 为 0,但并非总是如此),但我仍然对何时使用什么感到困惑。
UIView
frame
bounds
center
origin
在什么情况下(以及什么是正确的时间)应该使用其他属性( bounds, center, )?origin
马可上面的回答是正确的,但只是为了扩展“在什么情况下”的问题......
frame - 这是您最常用于普通 iPhone 应用程序的属性。大多数控件将相对于“包含”控件进行布局,因此 frame.origin 将直接对应于控件需要显示的位置,而 frame.size 将确定控件的大小。
center - 对于可能发生移动或缩放的基于精灵的游戏和动画,这是您可能会关注的属性。默认情况下,动画和旋转将基于 UIView 的中心。尝试通过 frame 属性管理此类对象几乎没有意义。
bounds - 此属性不是定位属性,而是定义 UIView 相对于框架的可绘制区域。默认情况下,此属性通常为 (0, 0, width , height )。更改此属性将允许您在框架外绘制或将绘制限制在框架内的较小区域。可以在下面的链接中找到对此的一个很好的讨论。除非特别需要调整绘图区域,否则很少会操纵此属性。唯一的例外是大多数程序将使用[[UIScreen mainScreen] bounds]启动时来确定应用程序的可见区域并相应地设置其初始 UIView 的框架。
[[UIScreen mainScreen] bounds]
为什么 UIView 中有一个框架矩形和一个边界矩形?
希望这有助于澄清每个属性可能被使用的情况。