4

我发现

UIView 的边界是矩形,表示为相对于其自身坐标系 (0,0) 的位置 (x,y) 和大小 (width,height)。

UIView 的 frame 是一个矩形,表示为相对于它所在的 superview 的位置 (x,y) 和大小 (width,height)。

但我的疑问是在哪种情况下我会有使用范围。我们不能在中使用框架吗

所有的情况?是否需要使用 bound ?

4

1 回答 1

11

查看编程指南

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

框架:

您主要使用 center 和 frame 属性来操作当前视图的几何图形。例如,您在构建视图层次结构或在运行时更改视图的位置或大小时使用这些属性。如果您只更改视图的位置(而不是其大小),则 center 属性是这样做的首选方式。center 属性中的值始终有效,即使缩放或旋转因子已添加到视图的变换中。frame 属性中的值也不是这样,如果视图的变换不等于恒等变换,则认为该值无效。

界限:

您主要在绘图期间使用 bounds 属性。边界矩形在视图自己的局部坐标系中表示。这个矩形的默认原点是 (0, 0),它的大小与框架矩形的大小相匹配。您在此矩形内绘制的任何内容都是视图可见内容的一部分。如果更改边界矩形的原点,则在新矩形内绘制的任何内容都将成为视图可见内容的一部分。

因此,您对框架执行以下操作:

  • 调整视图大小
  • 移动/重新定位视图

应该使用bounds 的情况:

  • 当您在具有边界的视图内绘制时,例如drawRect:UIView.
  • 将子视图添加到父视图边界
于 2012-10-25T13:22:18.520 回答