一个 UIView 的 frame origin 和其 center 之间有什么关系?

3
假设我正在创建动画,我想将UIView的中心移动到我拥有的某个CGPoint位置。我知道我想要的中心是什么,就是上述的CGPoint,我也知道我想要的宽度和高度,但是当我去创建我的UIView的框架时,我不知道该为原点的x和y设置什么。
我应该只设置0,0或任何值吗?这有关系吗?
我应该只把center看作是设置原点的另一种方法吗?让我希望CGRect有一个以center为选项的实例化程序。
之前有一个类似的问题,但它将它们视为三个单独的实体来处理,而不是如何在创建视图时处理中心。

可能是UIView frame,bounds和center的重复问题。 - Stuart
1个回答

4

可以将初始帧的原点设置为任何位置,因为随后设置中心将有效地移动此原点。当视图将要完全配置时,使用CGRectZero的框架进行初始化是很常见的。

frame实际上只是基于视图的centerbounds计算出来的属性,因此在视图布局方面,所有这三个属性都是内在相关的。关于此,UIView类参考文档有如下说明:

视图的几何形状由其frameboundscenter属性定义。 frame在其父视图的坐标系中定义视图的原点和尺寸,在布局期间通常用于调整视图的大小或位置。 center属性可用于调整视图的位置而不改变其大小。 bounds在视图内部看到的是其内部尺寸,几乎仅在自定义绘图代码中使用。 framebounds矩形的大小部分是耦合在一起的,因此更改任一矩形的大小都会更新两个矩形的大小。


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