何时使用Bound,何时使用Frame

4
我发现:
UIView的边界是一个矩形,以其自身坐标系(0,0)为相对位置(x,y)和大小(宽度,高度)表示。
UIView的框架是一个矩形,以其所包含的父视图为相对位置(x,y)和大小(宽度,高度)表示。
但我的疑问是,在哪种情况下我会使用边界。我们不能在所有情况下都使用框架吗?是否有必要使用边界呢?
1个回答

11

来自视图编程指南:

  • frame属性包含框架矩形,它指定视图在其父视图坐标系统中的大小和位置。
  • bounds属性包含边界矩形,它指定视图(及其内容原点)在视图本地坐标系统中的大小。

框架:

您主要使用中心和框架属性来操作当前视图的几何形状。例如,在构建视图层次结构或在运行时更改视图的位置或大小时,需要使用这些属性。如果仅更改视图的位置(而不是其大小),则中心属性是首选方法。即使已将缩放或旋转因子添加到视图的变换中,中心属性中的值始终有效。对于框架属性中的值,情况并非如此,如果视图的变换不等于标识变换,则该值被认为无效。
边界:
您主要在绘制过程中使用边界属性。边界矩形以视图自己的本地坐标系表示。此矩形的默认原点为(0,0),其大小与框架矩形的大小相同。您在此矩形内绘制的任何内容都是视图可见内容的一部分。如果更改边界矩形的原点,则在新矩形内绘制的任何内容都将成为视图可见内容的一部分。
因此,您可以使用框架执行以下操作:
  • 调整视图大小
  • 移动/重新定位视图

应使用 bounds 的情况:

  • 在视图内部进行绘制,例如在UIViewdrawRect:方法中使用bounds。
  • 将子视图添加到父视图的边界中

边界仍然让我感到困惑。有没有编程示例? - Raj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接