我正在使用AutoLayout在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希望将设备定位交给用户。但是,我希望能够在不使用“平视”模式时支持横向模式。
我是否缺少能够强制改变方向的东西?
万千封印
幕布斯6054654
潇潇雨雨
相关分类