当 presentViewController 没有导航视图控制器时,viewWillAppear 方向不正确

Posted

技术标签:

【中文标题】当 presentViewController 没有导航视图控制器时,viewWillAppear 方向不正确【英文标题】:viewWillAppear incorrect orientation when presentViewController without a navigation view controller 【发布时间】:2015-03-19 13:19:14 【问题描述】:

我遇到了一个奇怪的问题,我在景观中并提出了一个 VC

SomeViewController * vc = [[SomeViewController alloc] init];
[self.navigationController presentViewController:vc animated:YES completion:^

];

viewWillAppear 框架不正确地处于纵向,而在viewDidAppear正确地处于横向

但是当我把它放在 UINavigationController 中时

SomeViewController * vc = [[SomeViewController alloc] init];
UINavigationController * nc = [[UINavigationController alloc] initWithRootViewController:vc];

[self.navigationController presentViewController:nc animated:YES completion:^

];

viewWillAppear 框架是正确的横向

这是一个错误吗?我错过了什么吗?为什么会这样?

【问题讨论】:

【参考方案1】:

我认为这是设计使然,请参阅此答案 A: View frame changes between viewWillAppear: and viewDidAppear:。

viewDidAppear 框架几何是正确的,因为它现在在屏幕上并添加到视图层次结构中,但我实际上建议在 viewDidLayoutSubviews 中执行此操作,因为旋转方向时也会调用它。

【讨论】:

以上是关于当 presentViewController 没有导航视图控制器时,viewWillAppear 方向不正确的主要内容,如果未能解决你的问题,请参考以下文章

当 presentviewcontroller 或 pushviewcontroller 时 UITableView 被重新加载

当 presentViewController 没有导航视图控制器时,viewWillAppear 方向不正确

SKScene 在 presentViewController 之后重复

当presentviewcontroller ios时标签栏控制器显示黑屏

使用 presentViewController 时有趣的 UIScrollView

找不到 presentViewController