我正在使用自动布局在iPad应用程序上工作,如果用户启用了某种模式(“平视”模式),则我仅希望支持纵向(或纵向颠倒)方向,并且如果设备处于风景,我想自动切换到人像模式。
在顶视图控制器中,我具有以下内容:
- (NSUInteger) supportedInterfaceOrientations {
if (self.modeHeadsUp) {
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
} else {
return UIInterfaceOrientationMaskAll;
}
}
- (BOOL) shouldAutorotate {
return TRUE;
}
根据我在其他地方看到的答案,答案似乎是我应该使用“ application setStatusBarOrientation”。因此,在用户选择“抬头”模式的方法中,我包括:
UIApplication *application = [UIApplication sharedApplication];
[application setStatusBarOrientation:UIInterfaceOrientationPortrait
animated:YES];
但是,这似乎没有任何作用。虽然我可以物理移动设备以使其旋转成纵向,但它不会自动旋转。
实际上,当在运行上述代码以尝试以编程方式设置方向之后以横向模式运行时,当我使用以下代码查询应用程序“ statusBarOrientation”时,对于横向而言,它保持在“ 4”:
UIApplication *application = [UIApplication sharedApplication];
int orientation = [application statusBarOrientation];
self.movesTextView.text = [NSString stringWithFormat:@"ORIENTATION %d", orientation];
似乎没有用setStatusBarOrientation触发自动布局,所以我尝试在此之后添加以下代码,但没有任何效果:
[super updateViewConstraints];
[self.view updateConstraints];
我意识到Apple希望将设备定位交给用户。但是,我希望能够在不采用“平视”模式时支持横向模式。
我是否缺少能够强制改变方向的东西?