iOS 8 中呈现的视图控制器中的界面方向不正确
Posted
技术标签:
【中文标题】iOS 8 中呈现的视图控制器中的界面方向不正确【英文标题】:interface orientation not correct in presented view controllers in iOS 8 【发布时间】:2014-09-12 19:37:39 【问题描述】:在 ios 7 和更早版本中,我可以像这样在 viewDidLayoutSubviews
中进行 UI 更改:
- (void)viewDidLayoutSubviews
[super viewDidLayoutSubviews];
if ( UIInterfaceOrientationIsLandscape(self.interfaceOrientation) )
//update views for landscape
else
//update views for portrait
我仍然可以在 iOS 8 except 在其他视图控制器提供的视图控制器中执行此操作。当视图控制器由另一个视图控制器呈现时,这不起作用,因为self.interfaceOrientation
属性在呈现的视图控制器中不正确。它不反映当前方向,而是设备旋转之前的方向。
如果在 iPad 上呈现视图控制器并将 modalPresentationStyle
设置为 UIModalPresentationPageSheet
,则不会出现此问题。换句话说,只有在呈现全屏视图控制器时才会出现问题。
有什么建议吗?
【问题讨论】:
【参考方案1】:尝试改用这个:
[[UIApplication sharedApplication] statusBarOrientation]
此外,如果您放弃对 iOS 7 的支持而只支持 8,我建议您放弃界面方向处理以支持 trait 集合和大小类,如果可以的话。
【讨论】:
这很棒。像这样的 iOS 8 有这么多小问题真是太烦人了。 是的,但我认为随着我们将来尝试编写更多与设备无关的应用程序,它们会有所改进。 iOS 8 中的很多东西都是关于修复第一次做的奇怪或错误的东西。以上是关于iOS 8 中呈现的视图控制器中的界面方向不正确的主要内容,如果未能解决你的问题,请参考以下文章