Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在方向更改时以编程方式重画子视图_Ios_Swift_Subview_Orientation Changes - Fatal编程技术网

Ios 在方向更改时以编程方式重画子视图

Ios 在方向更改时以编程方式重画子视图,ios,swift,subview,orientation-changes,Ios,Swift,Subview,Orientation Changes,我已经以编程方式在UiViewController中创建了所有子视图。 当设备旋转时,我想重新创建UiViewController的整个布局,因此我在viewDidLoad()中写入以下行 问题是该方法被多次调用 为什么会发生这种情况 另外,以编程方式重新创建UiViewController的整个布局的适当方式是什么?来自文档: 当可见视图控制器发生旋转时,将在旋转期间调用willRotateToInterfaceOrientation:duration:、WillAnimateRotation

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

问题是该方法被多次调用

为什么会发生这种情况


另外,以编程方式重新创建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)