在iOS 7中,我们说:
// ViewController1:
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
-(BOOL)shouldAutorotate {
return YES;
}
// ViewController2, presented by modal segue from button in ViewController1
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
-(BOOL)shouldAutorotate {
return YES;
}
结果是,应用程序出现在视图控制器1的横向和视图控制器2的纵向中。
该代码在iOS 7中运行良好,包括Xcode6中的iOS 7模拟器。但它在iOS 8中不再有效。有两个问题:
因此,视图控制器视图不会自动调整大小以填充整个屏幕,并且呈现的视图控制器支持的方向也不会被支持。
那么我们现在该怎么做呢?这与特征集合有关吗?使用首选的内容大小?手动设置状态栏方向?
发布于 2014-06-28 22:03:42
第一部分(进入横向)的答案在iOS 7中没有变化:一切都取决于Info.plist文件中可能的方向顺序。因此,假设View Controller 1是这样说的:
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
然后,如果横向在Info.plist的支持接口方向中首先出现,我们将一致地启动到横向:
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationPortrait</string>
</array>
iOS 8中一个值得注意的变化是,默认情况下,当我们处于横向状态时,状态栏是隐藏的。但是,如果需要,您可以使用适当的覆盖来防止这种情况:
-(BOOL)prefersStatusBarHidden {
return NO;
}
这并没有回答我问题的第二部分,即在呈现视图控制器时如何强制旋转。正如我在this answer中解释的那样,我的感觉是,这在iOS 8中将变得不可能。你的视图控制器和视图应该“适应”--你也是。
编辑:看起来像是在Seed4中,强制应用程序在视图控制器呈现/解除上旋转的能力又回来了!
发布于 2014-12-16 06:51:42
问题可能在您的*.plist文件中
选中后,您需要的是列出屏幕的默认/首次启动方向,如下所示
支持的接口方向:
项目0横向(右主页按钮)
项目1纵向(底部主页按钮)
这个"bug“我追逐了几天,直到我在Xcode的全局搜索中检查了工作UIInterface,注意到我列出了我的游戏不支持的方向(整个游戏是100%的地景权)
我摆脱了横向左方向,这是GameCenter启动的原因,如果我物理上将设备放在横向左方向,它会旋转到横向左方向。
问题解决了。
https://stackoverflow.com/questions/24463543
复制相似问题