以编程方式重定向子视图以更改方向

时间:2016-03-29 13:31:05

标签: ios swift subview orientation-changes

我已经以编程方式在UiViewController中创建了所有子视图。 当设备旋转时,我想重新创建UiViewController的整个布局,所以我在viewDidLoad()中写下波纹线

NSNotificationCenter.defaultCenter().addObserver(self, selector: "rotated", name: UIDeviceOrientationDidChangeNotification, object: nil)

问题是旋转的方法被多次调用。

为什么会这样?

另外,以编程方式重新创建UiViewController的整个布局的适当方法是什么?

1 个答案:

答案 0 :(得分:0)

来自文档:

  

当可见视图控制器发生旋转时,willRotateToInterfaceOrientation:duration:,willAnimateRotationToInterfaceOrientation:duration:和didRotateFromInterfaceOrientation:在旋转期间调用方法。视图调整大小并由其父视图定位后,也会调用viewWillLayoutSubviews方法。如果在发生方向更改时视图控制器不可见,则永远不会调用旋转方法。但是,当视图变为可见时,将调用viewWillLayoutSubviews方法。您对此方法的实现可以调用statusBarOrientation方法来确定设备方向。

所以在“didRotateFromInterfaceOrientation:”方法中这样做。