如何在iOS 7中支持多个屏幕方向,而无需在堆栈上推另一个视图控制器?

如何在iOS 7中支持多个屏幕方向,而无需在堆栈上推另一个视图控制器?,ios,objective-c,uiinterfaceorientation,Ios,Objective C,Uiinterfaceorientation,我一直在尝试使用单个视图控制器实现多个方向。目前,它检查设备方向和视图控制器。然后根据是横向还是纵向进行切换。问题是,它在纵向视图中工作得很好,但由于它在横向视图中时会推动堆栈上的另一个视图,因此“后退”按钮链接到纵向视图,而不是我们想要返回的实际屏幕(这是进一步的一步) 我无法以模态方式呈现横向视图控制器,因为涉及到导航控制器 另一件事是,我正在为每个方向实例化相同的视图控制器(使用相同的类,但链接到故事板中的不同标识符)。您试图做的事情非常糟糕,与苹果的做法背道而驰 有一种叫做Autolay

我一直在尝试使用单个视图控制器实现多个方向。目前,它检查设备方向和视图控制器。然后根据是横向还是纵向进行切换。问题是,它在纵向视图中工作得很好,但由于它在横向视图中时会推动堆栈上的另一个视图,因此“后退”按钮链接到纵向视图,而不是我们想要返回的实际屏幕(这是进一步的一步)

我无法以模态方式呈现横向视图控制器,因为涉及到导航控制器


另一件事是,我正在为每个方向实例化相同的视图控制器(使用相同的类,但链接到故事板中的不同标识符)。

您试图做的事情非常糟糕,与苹果的做法背道而驰


有一种叫做Autolayout的东西,你可以用它设计一个视图,在横向和纵向模式下都可以工作。

你可以通过编程处理,也可以根据你的需要简单地使用Autolayout。只是更喜欢它。

嗨,我不知道它的存在。谢谢你的快速回答!
if (UIDeviceOrientationIsLandscape(deviceOrientation) &&
        self.navigationController.visibleViewController == self)
    {
        self.landscapeViewController =
        [self.storyboard instantiateViewControllerWithIdentifier:@"view_landscape"];

        [self.navigationController pushViewController:self.landscapeViewController
                                             animated:NO];

    }
    else if (UIDeviceOrientationIsPortrait(deviceOrientation) &&
             self.navigationController.visibleViewController == self.landscapeViewController)
    {
        [self.navigationController popViewControllerAnimated:NO];
    }