【问题标题】:interface orientation not correct in presented view controllers in iOS 8iOS 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,则不会出现此问题。换句话说,只有在呈现全屏视图控制器时才会出现问题。

有什么建议吗?

【问题讨论】:

    标签: ios objective-c uiviewcontroller ios8 uiinterfaceorientation


    【解决方案1】:

    尝试改用这个:

    [[UIApplication sharedApplication] statusBarOrientation]
    

    此外,如果您放弃对 iOS 7 的支持而只支持 8,我建议您放弃界面方向处理以支持 trait 集合和大小类,如果可以的话。

    【讨论】:

    • 这很棒。像这样的 iOS 8 有这么多小问题真是太烦人了。
    • 是的,但我认为随着我们将来尝试编写更多与设备无关的应用程序,它们会有所改进。 iOS 8 中的很多东西都是关于修复第一次做的奇怪或错误的东西。
    猜你喜欢
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多