在iOS 7中强制横屏显示视图控制器

4

我有十多个ViewController在竖屏模式下,但是我需要强制一个单独的ViewController在横屏模式下运行,而不考虑设备的方向。

1个回答

12

这里是解决方案:

1)将LandscapeViewController嵌入子类化的NavigationController中,并使用模态segue从PortraitViewController连接它。

LandscapeViewController embedded into a new LandscapeNavigationController

2)子类化UINavigationController

LandscapeNavigationController.m

-(BOOL)shouldAutorotate
{
    return NO;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscapeLeft;
}

3) 别忘了关闭你的模态 VC(在这种情况下是从我的 Bar Buttom Item Action 中)

- (IBAction)goBack:(id)sender
{
    [self.navigationController dismissViewControllerAnimated:YES completion:nil];
}

3
使用这种方式进行分类是一个糟糕的想法 - 它在碰撞时的行为是未经记录的。当使用分类时,您应该始终添加前缀以避免此类情况。在这种情况下,子类化导航控制器会是更好的解决方案。 - Oliver Atkinson
你说得对,@OliverAtkinson。我正在使用你的方法来修改我的解决方案。我正在编辑我的答案。 - Fede Cugliandolo
2
这些类别的重点是覆盖。但我会选择子类化。 - Léo Natan
它在横屏模式下显示,但在关闭后,它会使我的先前的视图控制器保持横屏而不是显示为竖屏模式... - user3441799
1
谢谢@FedeCugliandolo。我使用了单独的子类化NavigationController来处理竖屏模式,它起作用了 ;)。 - user3441799
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接