supportedInterfaceOrientationsForWindow returns UIInterfaceOrientationMaskPortrait 但我的 viewcontroller 横向显示

supportedInterfaceOrientationsForWindow returns UIInterfaceOrientationMaskPortrait but my viewcontroller show in landscape

我正在处理 appdelegate.m 文件中的所有方向。 supportedInterfaceOrientationsForWindow returns UIInterfaceOrientationMaskLandscape 对于我的一些视图控制器和 UIInterfaceOrientationMaskPortrait 对于一个 viewcontroller.

当我从横向 viewcontroller 移动到 viewcontroller 时,我想纵向 supportedInterfaceOrientationsForWindow returns UIInterfaceOrientationMaskPortrait 但是我的视图控制器显示为横向。

请帮助我,我已经被困了很长时间了。测试 iPhone 6,iOS 9.

假设视图 A 是您应用的横向视图之一,而 B 是预期的纵向视图。现在,当设备最初在 A 上保持纵向,然后访问 B 时,视图不会将方向更改为纵向(因为设备已经处于纵向)。

我建议 'tell' 系统在准备转场时 B 最初是横向的,然后在 B 的视图控制器的 viewDidLoad 中,将方向更改为纵向。

这样一来,无论前一个视图的方向如何,B 在加载时都将始终以纵向打开。

使用以下代码更改方向。如果您使用的是 segue,请在

中使用此代码
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft];
    [[UIDevice currentDevice] setValue:value forKey:@"orientation"];
}

此处的方向应与下一个视图控制器中所需的方向相反。