ios - 模态关闭后 viewWillAppear 没有更新旋转

标签 ios swift uiviewcontroller rotation

我有两个 View Controller (ViewController1 和 ViewController2),其中 ViewController1 有一个到 ViewController2 的模式转场,而 ViewController2 可以返回到 ViewController1。

如果我按照以下步骤操作:

ViewController1—rotate to landscape—modal to VC2—ViewController2—rotate to portrait—dismiss to VC1

然后,在 ViewController1 的 viewWillAppear 中,我打印 view.frame.size 并得到这个(在 iPhone 6s 模拟器上运行):

(667.0, 375.0)

所以这意味着宽度比高度长,或者它仍然是横向的。

这告诉我 ViewController1 还没有旋转,这是有道理的,因为这是在 viewWillAppear 中。

我目前的选择(据我所知):

  1. 使用 viewDidAppear — 不是首选,因为我在这里重新加载 Collection View 并且更改会很明显。

  2. 创建一个 unwind segue — 不推荐,因为这需要 Storyboard。

那么我的其他选择是什么?是否有最适合我需要的 View Controller 方法?

最佳答案

你是对的:在 viewWillAppear 期间,ViewController1 的 View 尚未处于窗口层次结构中,因此它没有机会进行布局。 一般来说,如果你有一些处理布局的代码,我可能会考虑将其放在 viewWillLayoutSubviews 或 viewDidLayoutSubviews 方法中。

关于ios - 模态关闭后 viewWillAppear 没有更新旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36511499/

相关文章:

ios - -[__ NSArrayM objectForKey:]:无法识别的选择器已发送到实例0x9d0d720

ios - Swift 1.1 的新错误

ios - 无法实例化 View Controller

ios - 如何将从核心数据中获取的数据发送到另一个 VC?

iPhone - 使用哪些 View Controller 方法

ios - 关闭一个 View Controller 并以相同的方法呈现一个新的 - swift

ios - 多语言 IOS 应用程序

ios - 从 iPhone 中的本地通知打开相机

ios - Swift:同步 Web 服务调用

iOS:ViewController 的 -init 和 -viewLoad 有什么区别?