我有两个 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
中。
我目前的选择(据我所知):
使用
viewDidAppear
— 不是首选,因为我在这里重新加载 Collection View 并且更改会很明显。创建一个 unwind segue — 不推荐,因为这需要 Storyboard。
那么我的其他选择是什么?是否有最适合我需要的 View Controller 方法?
最佳答案
你是对的:在 viewWillAppear 期间,ViewController1 的 View 尚未处于窗口层次结构中,因此它没有机会进行布局。 一般来说,如果你有一些处理布局的代码,我可能会考虑将其放在 viewWillLayoutSubviews 或 viewDidLayoutSubviews 方法中。
关于ios - 模态关闭后 viewWillAppear 没有更新旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36511499/