2014-12-07 113 views
2

帧的大小可以不同于UIView的边界大小。UIView的边界大小vs帧大小

每当我设置其中任何一个时,我都注意到两者都发生了变化,并且它们始终保持同步。有没有一个边缘情况下,这是不正确的?

回答

4

是的;例如,变换的(例如旋转的)视图具有不同的(并且无用的)帧大小。

该框架纯粹是一种方便,如果必须,您可以完全没有它;边界的大小和中心一起准确且始终描述视图的位置和大小。

+0

您可能想要阅读我关于此主题的书籍,从这里开始:http://www.apeth.com/iOSBook/ch14.html#_frame – matt 2014-12-07 02:16:47

+0

我不会说转换的帧是**无用的* *。如果您想知道旋转视图所占用的区域,以便超级视图可以根据该视图设置某些内容,则框架就是您想要的。 – LucasTizma 2015-03-08 04:10:55

0

bounds“在其自己的坐标系中描述视图的位置和大小”。

frame“在其超视图的坐标系统中定义视图的原点和尺寸”。

因此,对于使用不同坐标系统的任何视图,两者应该不同。关键是赠品:

然而,如果变换属性包含非恒等变换, 框架属性的值是未定义的,并且不应被 修改。在这种情况下,您可以使用中心 属性重新定位视图,并使用bounds属性调整大小。

所以这是一个例子苹果给你当frame被定义并不是要bounds可预测的关系:每当你设置一个非恒等变换。

(源对所有报价是the UIView documentation

2

是,请参考帧定界之间的下面简单的区别: -

视图的帧是长方形,表示为位置( x,y) 和大小(宽度,高度)相对于superview它包含 之内。

一个视图的边界是矩形,表示为位置(X,Y) 和大小(宽度,高度)相对于它自己的坐标系。

+0

界限并不总是(0,0)的原点。 – 2014-12-07 04:53:51

+0

谢谢,已更新 – 2014-12-07 11:14:31