在设备旋转后设置前一个视图控制器的布局

Posted

技术标签:

【中文标题】在设备旋转后设置前一个视图控制器的布局【英文标题】:Set layout of previous view controller after device rotation 【发布时间】:2015-04-09 03:23:17 【问题描述】:

我有一个UIViewController vc2,它位于vc1 之后的导航堆栈上。当我在vc2 上旋转设备时,我需要vc1 来更新它的用户界面。但是,当我尝试在 willAnimateRotationToInterfaceOrientation 中执行此操作时,它不起作用。

从堆栈中弹出vc2 后,我尝试在viewWillAppearviewDidLoad 中更新vc1 UI,但它不起作用。如果我在viewDidAppearviewWillLayoutSubviews 中执行此操作,它会起作用,但它仅在视图出现后更新 UI,以便用户可以在屏幕上看到它的动画。

有没有办法在视图出现之前设置它,以便用户看不到子视图的动画?

【问题讨论】:

您找到解决方案了吗?我有同样的问题。我需要更新导航堆栈上前一个视图控制器的布局,然后它才能在自定义转换中可见。 @Sebastian Nah 我还没有。我目前在 viewDidAppear 中有它,但作为状态它在视图控制器出现后动画。 【参考方案1】:

到目前为止,我发现唯一可行的解​​决方案是我在问题中提到的在viewDidAppearviewWillLayoutSubviews 中更新 UI 的解决方案。不幸的是,当视图控制器出现时,您会看到 UI 组件在屏幕上的正确位置上显示动画。希望有人能找到更好的解决方案。

【讨论】:

以上是关于在设备旋转后设置前一个视图控制器的布局的主要内容,如果未能解决你的问题,请参考以下文章

视图控制器和自动布局旋转问题

使用方向更改视图布局

提交前 Swift segue 自定义转换布局

显示模态视图控制器时设备旋转

仅在设备旋转时旋转某些 UI 元素

iOS8 - 在 UINavigationController 上推送 UIViewController 并旋转设备后,以前的视图控制器中的大小错误