2

在 iOS 上,如果我们改变一个视图的frame,我们改变它的bounds,如果我们改变它的bounds,我们改变它的frame

但是我们可以通过以下方式改变视图的内部坐标系:

CGRect b = v.bounds;    // v is the UIView object
b.origin.x = 10000;
b.origin.y = 10000;
v.bounds = b;

现在,视图的左上角是 的坐标(10000, 10000)。这是否也可以通过仅更改framecenter不是更改来实现bounds

4

1 回答 1

3

在 iOS 上,如果我们改变视图的框架,我们就会改变它的边界,如果我们改变它的边界,我们就会改变它的框架。

这是对的一半。只有这两个矩形的大小绑定在一起。从文档:

框架和边界矩形的大小部分耦合在一起,因此更改任一矩形的大小都会更新两者的大小。

这并没有提到起源。因此,您的示例将修改内部坐标系的原点,而不会更改其在超级视图坐标系中的位置。您无法通过frameorcenter属性实现该行为;它们只影响视图在其父视图坐标系中的位置。

于 2012-05-23T22:07:39.920 回答