我有一个 iPad 应用程序,它在整个应用程序中支持纵向和横向。这是应用程序的 iOS 7 和 iOS 8 版本。
该应用程序是一个 UITableViewController
,具有多个 segues 到一组不同的 UIViewControllers
。我在应用程序中有一个选项可以再次显示教程,并且我在仅纵向模式的方向上创建了图像,因为它没有太大意义(或者在横向模式下看起来不错)。
考虑到这一点,本教程采用将图像加载到 UIPageViewController
中的形式。图片加载到 viewDidLoad
中,按钮和布局效果非常好。
问题
我想将 UIPageViewController
限制为仅纵向。
目前,我有:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[[UIDevice currentDevice] setValue:
[NSNumber numberWithInteger: UIInterfaceOrientationPortrait]
forKey:@"orientation"];
}
这在某种程度上是有效的。如果设备处于横向模式并且调用了教程,它会将其旋转为纵向。
但是,如果设备处于纵向模式并且我在调用教程后将其旋转为横向模式,则教程会随之旋转。
在我的自定义 UIPageViewController
类中究竟如何防止此 View 旋转,以便它永远不会旋转到 Landscape,无论它是在教程的开始、中间还是结束。
任何关于这方面的指导将不胜感激。
最佳答案
查看 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 合规性审核过程中受到打击,因为您的应用声称支持所有方向,但其中部分内容并不支持。显然,这完全取决于评论者,以及他们是否能捕获它,因为很多其他应用程序都这样做。
关于ios - 在 iPad 上的 UIPageViewController 中强制使用纵向模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26804336/