有人可以指点我对上面的一个很好的入门,当你弄乱其他人时会发生什么?似乎无论我做什么,一旦我开始搞乱状态栏方向或视图转换(即使我正在做的是90度旋转),我可以指望我的观点最终横向,上行向下和向后,并在一个令人沮丧的下午试验和错误试图让他们理顺。一旦你知道逻辑和所有应用的顺序,我确信一切都有意义,但到目前为止,根据经验,我无法弄明白。
答案 0 :(得分:4)
我不知道关于这个主题的一个好的单一文档入门,但以下是我从经验和阅读文档中学到的。
中心,边界和框架
如果设置了框架,则会更新中心和边界。如果设置中心或边界,则帧将更新。 Frame是一种使用superview坐标系操纵中心和边界的便捷方法。
视图的几何形状由其框架,边界和中心属性定义。框架在其超视图的坐标系中定义视图的原点和尺寸,并且通常在布局期间用于调整视图的大小或位置。 center属性可用于调整视图的位置而不改变其大小。边界定义了视图的内部尺寸,并且几乎只用于自定义绘图代码。框架和边界矩形的大小部分耦合在一起,因此更改任一矩形的大小会更新两者的大小。
有关详细信息,请参阅The Relationship of the Frame, Bounds, and Center Properties。
<强>变换强>
如果将transform属性设置为除标识转换之外的其他内容,则框架未定义。如果将变换设置为其他值,则应仅使用center(将视图定位在其superview中)和边界(以调整视图的大小)来操纵视图几何。以下是UIView Class Reference的相关信息:
变换的原点是中心属性的值,如果更改了图层的anchorPoint属性。 (使用layer属性获取基础Core Animation层对象。)默认值为CGAffineTransformIdentity。
...
警告如果转换属性不是标识转换,则此属性的值未定义,因此应忽略。
有关详细信息,请参阅Coordinate System Transforms。
<强> UIInterfaceOrientation 强>
UIInterfaceOrientation不直接影响变换,边界,中心或框架属性。但是,当设备方向改变时,视图控制器将自动调整其子视图的大小(这将反过来调整其子视图的大小等等。)
有关详细信息,请参阅Responding to Device Orientation Changes和View Controller View Resizing。