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



在iOS7及更早版本中,我能够在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的视图控制器,则不存在此问题。换句话说,该问题仅在呈现全屏视图控制器时出现。

有什么建议吗?

试着使用这个:

[[UIApplication sharedApplication] statusBarOrientation]

此外,如果你放弃了对iOS 7的支持,只支持8,如果可以的话,我建议你放弃界面定向处理,转而支持特征集合和尺寸类。

最新更新