在iOS 8中的呈现视图控制器中,界面方向不正确

时间:2014-09-12 19:37:39

标签: ios objective-c uiviewcontroller ios8 uiinterfaceorientation

在iOS 7及更早版本中,我能够在viewDidLayoutSubviews中进行UI更改,如下所示:

- (void)viewDidLayoutSubviews {

    [super viewDidLayoutSubviews];

    if ( UIInterfaceOrientationIsLandscape(self.interfaceOrientation) ) {

        //update views for landscape

    }

    else {

        //update views for portrait

    }

}

我仍然可以在其他视图控制器提供的视图控制器中的iOS 8 中执行此操作。当视图控制器由另一个视图控制器呈现时,这不起作用,因为在所呈现的视图控制器中self.interfaceOrientation属性不正确。它不反映当前的方向,而是反映设备旋转前的方向。

如果在iPad上显示modalPresentationStyle设置为UIModalPresentationPageSheet的视图控制器,则不会出现此问题。换句话说,只有在呈现全屏视图控制器时才会出现此问题。

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

请尝试使用此代码:

[[UIApplication sharedApplication] statusBarOrientation]

此外,如果您放弃对iOS 7的支持并且只支持8-only,我建议您删除界面方向处理,以支持特征集合和大小类,如果可以的话。