6

我的视图设置在viewDidLoad. 所有不同的框架等子视图都相对于self.view. 因此,self.view子视图的大小总是会缩小或扩大以适应(就像它一样)。

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

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

有什么办法可以刷新子视图的框架之类的吗?老实说,我不知道其他人做了什么。我是否必须将所有视图作为属性放入 .h 文件中并手动执行所有操作didRotate...

4

1 回答 1

6

你有三个选择:

  1. 如果自动调整大小掩码足以定位您的视图,请在创建每个子视图时为其分配正确的自动调整大小掩码。

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

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

于 2010-09-23T13:12:27.383 回答