在iPad上的UIPageViewController中强制纵向模式

时间:2014-11-07 15:17:22

标签: ios objective-c ipad uiimageview uipageviewcontroller

我有一个iPad应用程序,它支持整个应用程序中的纵向和横向。这是应用程序的iOS 7和iOS 8版本。

该应用是一个UITableViewController,其中包含多个不同UIViewControllers组的分段。我在应用程序中有一个选项可以再次显示教程,我已经在仅限纵向模式下创建了图像,因为它不太有意义(或者在Landscape中看起来很好)。

考虑到这一点,本教程采用加载到UIPageViewController的图像形式。图像加载到viewDidLoad中,按钮和布局工作得非常好。

问题 我想将UIPageViewController限制为仅限纵向。

目前,我有:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    [[UIDevice currentDevice] setValue:
     [NSNumber numberWithInteger: UIInterfaceOrientationPortrait]
                                forKey:@"orientation"];

}

这在某种程度上有效。如果设备处于横向模式并且调用了教程,则会将其旋转为纵向。

但是,如果设备处于纵向状态,并且在调用教程后将其旋转为横向,则教程将旋转。

我如何阻止此视图在我的自定义UIPageViewController类中旋转,以便它不会旋转到横向,无论它是在教程的开头,中间还是结尾。

对此的任何指导都将非常感激。

1 个答案:

答案 0 :(得分:2)

查看UIViewController文档以获取方向支持,特别是shouldAutorotate:supportedInterfaceOrientations - https://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UIViewController_Class/index.html#//apple_ref/occ/instm/UIViewController/supportedInterfaceOrientations

我的第一个猜测是你想要像现在一样设置值,然后在自定义UIPageViewController子类中覆盖shouldAutorotate并返回NO。

但是,请注意,您可能会在HIG合规性审核流程中受到影响,因为您的应用声称支持所有方向,但部分方案不支持。显然,这完全取决于审稿人,以及他们是否会像其他许多应用程序一样抓住它。