我已经以编程方式在UiViewController中创建了所有子视图。 当设备旋转时,我想重新创建UiViewController的整个布局,所以我在viewDidLoad()中写下波纹线
NSNotificationCenter.defaultCenter().addObserver(self, selector: "rotated", name: UIDeviceOrientationDidChangeNotification, object: nil)
问题是旋转的方法被多次调用。
为什么会这样?
另外,以编程方式重新创建UiViewController的整个布局的适当方法是什么?
答案 0 :(得分:0)
来自文档:
当可见视图控制器发生旋转时,willRotateToInterfaceOrientation:duration:,willAnimateRotationToInterfaceOrientation:duration:和didRotateFromInterfaceOrientation:在旋转期间调用方法。视图调整大小并由其父视图定位后,也会调用viewWillLayoutSubviews方法。如果在发生方向更改时视图控制器不可见,则永远不会调用旋转方法。但是,当视图变为可见时,将调用viewWillLayoutSubviews方法。您对此方法的实现可以调用statusBarOrientation方法来确定设备方向。
所以在“didRotateFromInterfaceOrientation:”方法中这样做。