在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)
的坐标。仅通过更改frame
和center
而不是bounds
来实现这一点吗?
答案 0 :(得分:3)
在iOS上,如果我们更改视图的框架,我们会更改其边界,如果我们更改其边界,我们会更改其边框。
这是正确的一半。只有这两个rects的 sizes 绑定在一起。来自文档:
框架和边界矩形的大小部分耦合在一起,因此更改任一矩形的大小会更新两者的大小。
没有提到起源。因此,您的示例将修改内部坐标系的原点而不更改其在superview坐标系中的位置。您无法通过frame
或center
属性实现此行为;它们只会影响视图在超视图坐标系中的位置。