2016-03-29 116 views
0

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

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

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

为什么会发生这种情况?

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

+0

你在哪里添加/注册通知观察者viewDidload或Viewwillapprar?如果你已添加viewwillappear或viewdidappear然后你必须删除相同的viewwilldisappear或viewdidDialogue –

+0

在viewDidload() –

+0

我已经做到了.. –

回答

0

从文档:

当发生旋转时用于可见视图控制器,所述willRotateToInterfaceOrientation:持续时间:,willAnimateRotationToInterfaceOrientation:持续时间:和didRotateFromInterfaceOrientation:方法在旋转过程中被调用。 viewWillLayoutSubviews方法也在视图调整大小并由父级定位后调用。如果在发生方向更改时视图控制器不可见,则不会调用旋转方法。但是,视图变为可见时,将调用viewWillLayoutSubviews方法。此方法的实现可以调用statusBarOrientation方法来确定设备方向。

所以在“didRotateFromInterfaceOrientation:”方法中做到这一点。

相关问题