Ios 在方向更改时以编程方式重画子视图
我已经以编程方式在UiViewController中创建了所有子视图。 当设备旋转时,我想重新创建UiViewController的整个布局,因此我在viewDidLoad()中写入以下行 问题是该方法被多次调用 为什么会发生这种情况Ios 在方向更改时以编程方式重画子视图,ios,swift,subview,orientation-changes,Ios,Swift,Subview,Orientation Changes,我已经以编程方式在UiViewController中创建了所有子视图。 当设备旋转时,我想重新创建UiViewController的整个布局,因此我在viewDidLoad()中写入以下行 问题是该方法被多次调用 为什么会发生这种情况 另外,以编程方式重新创建UiViewController的整个布局的适当方式是什么?来自文档: 当可见视图控制器发生旋转时,将在旋转期间调用willRotateToInterfaceOrientation:duration:、WillAnimateRotation
另外,以编程方式重新创建UiViewController的整个布局的适当方式是什么?来自文档: 当可见视图控制器发生旋转时,将在旋转期间调用willRotateToInterfaceOrientation:duration:、WillAnimateRotationInterfaceOrientation:duration:、和didRotateFromInterfaceOrientation:方法。viewWillLayoutSubviews方法也在视图的父视图调整大小和位置后调用。如果发生方向更改时视图控制器不可见,则永远不会调用旋转方法。但是,当视图变为可见时,将调用viewWillLayoutSubviews方法。此方法的实现可以调用statusBarOrientation方法来确定设备方向
因此,请在“didRotateFromInterfaceOrientation:”方法中执行此操作。在其中添加/注册通知观察者viewDidload或ViewWillAppar?如果在ViewWillDisplay或ViewDidDisplay中添加了,则必须在ViewWillEnglishe或ViewDidEnglishe中删除相同的内容。我已经这样做了。。
NSNotificationCenter.defaultCenter().addObserver(self, selector: "rotated", name: UIDeviceOrientationDidChangeNotification, object: nil)