Bar*_*tox 238
马克的上述答案是正确的,但只是为了扩展"在什么情况下"的问题......
frame - 这是您最常用于普通iPhone应用程序的属性.大多数控件将相对于"包含"控件进行布局,因此frame.origin将直接对应于控件需要显示的位置,frame.size将确定控件的大小.
center - 这是您可能会关注基于精灵的游戏和动画的属性,可能会发生移动或缩放.默认情况下,动画和旋转将基于UIView的中心.尝试通过frame属性管理这些对象很少有意义.
bounds - 此属性不是定位属性,而是定义UIView"相对"到框架的可绘制区域.默认情况下,此属性通常为(0,0,宽度,高度).更改此属性将允许您在框架外绘制或将绘图限制在框架内的较小区域.有关这方面的详细讨论可以在下面的链接中找到.除非特别需要调整绘图区域,否则操作此属性的情况并不常见.唯一的例外是大多数程序将使用[[UIScreen mainScreen] bounds]启动时确定应用程序的可见区域并相应地设置其初始UIView的帧.
希望这有助于澄清每个属性可能被使用的情况.
Tyl*_*ler 36
它们是相关的值,并通过属性setter/getter方法保持一致(并使用frame是纯合成值的事实,而不是由实际的实例变量支持).
主要方程是:
frame.origin = center - bounds.size / 2
Run Code Online (Sandbox Code Playgroud)
(与之相同)
center = frame.origin + bounds.size / 2
Run Code Online (Sandbox Code Playgroud)
(还有)
frame.size = bounds.size
Run Code Online (Sandbox Code Playgroud)
这不是代码,只是表达三个属性之间不变量的方程式.这些方程式还假设您的视图变换是标识,默认情况下也是如此.如果不是,则边界和中心保持相同的含义,但框架可以改变.除非您正在进行非直角旋转,否则帧将始终是超视图坐标的变换视图.
这里有一个有用的迷你库,这里有更详细的解释:
http://bynomial.com/blog/?p=24
| 归档时间: |
|
| 查看次数: |
104960 次 |
| 最近记录: |