设备旋转的“刷新”视图

时间:2010-09-23 11:42:26

标签: cocoa-touch rotation autorotate

我在viewDidLoad设置了我的观点。所有不同的框架和相应的子视图都是相对于self.view定义的。因此,无论大小self.view是什么,子视图总是缩小或扩展以适合(实际上)。

因此,当我旋转设备时,我希望视图旋转(使用shouldAutoRotateToInterfaceOrientation:...很容易),但子视图保持相同的形状。

调用[self viewDidLoad];会使所有元素都适合,但会在前一个布局之上放置一个新图层(这很明显......但我只是想解释一下我的意思)。

有没有办法刷新子视图的帧或什么?我不知道其他人说实话。我是否必须将我的所有观点作为属性放入.h文件中,并在didRotate...上手动完成所有操作?

1 个答案:

答案 0 :(得分:6)

您有三种选择:

  1. 如果自动调整蒙版足以定位视图,请在创建时为每个子视图指定正确的自动调整蒙版。

  2. 如果自动调整大小的掩码不够,请覆盖willAnimateRotationToInterfaceOrientation:duration:并在该方法中重新定位子视图。我将创建一个自定义方法,将方向作为参数,并负责布局所有子视图。然后,您可以从willAnimateRotationToInterfaceOrientation:duration:viewDidLoad

  3. 调用此方法
  4. 您还可以创建自定义UIView子类,并使视图控制器的视图成为此类的实例。然后覆盖layoutSubviews以根据视图的大小定位所有子视图。此方法意味着您的自定义视图管理其子视图而不是视图控制器。