我在viewDidLoad
设置了我的观点。所有不同的框架和相应的子视图都是相对于self.view
定义的。因此,无论大小self.view
是什么,子视图总是缩小或扩展以适合(实际上)。
因此,当我旋转设备时,我希望视图旋转(使用shouldAutoRotateToInterfaceOrientation:...
很容易),但子视图保持相同的形状。
调用[self viewDidLoad];
会使所有元素都适合,但会在前一个布局之上放置一个新图层(这很明显......但我只是想解释一下我的意思)。
有没有办法刷新子视图的帧或什么?我不知道其他人说实话。我是否必须将我的所有观点作为属性放入.h文件中,并在didRotate...
上手动完成所有操作?
答案 0 :(得分:6)
您有三种选择:
如果自动调整蒙版足以定位视图,请在创建时为每个子视图指定正确的自动调整蒙版。
如果自动调整大小的掩码不够,请覆盖willAnimateRotationToInterfaceOrientation:duration:
并在该方法中重新定位子视图。我将创建一个自定义方法,将方向作为参数,并负责布局所有子视图。然后,您可以从willAnimateRotationToInterfaceOrientation:duration:
和viewDidLoad
。
您还可以创建自定义UIView
子类,并使视图控制器的视图成为此类的实例。然后覆盖layoutSubviews
以根据视图的大小定位所有子视图。此方法意味着您的自定义视图管理其子视图而不是视图控制器。