使用Photolibrary将shouldAutorotate设置为false

时间:2014-08-01 23:36:55

标签: ios swift uipopovercontroller uiinterfaceorientation shouldautorotate

如果我从iPad添加一个可以访问我的照片库的popover,系统将始终崩溃,并显示以下消息:

  

由于未捕获的异常'UIApplicationInvalidInterfaceOrientation'而终止应用程序,原因:'支持的方向与应用程序没有共同的方向,[PUUIAlbumListViewController shouldAutorotate]返回YES'

但我已在我的Projekt信息中设置了仅支持横向模式。

所以我添加了以下功能

override func shouldAutorotate() -> Bool {

    return false
}

但我不知道如何使用它?如果我也在我的应用上启用UIInterfaceOrientationPortrait,则可以正常使用。但我不想支持UIInterfaceOrientationPortrait

我会像这样叫我的popover:

var popover: UIPopoverController = UIPopoverController(contentViewController: ImagePickerController)

popover.presentPopoverFromBarButtonItem(addImageButton, 
                                        permittedArrowDirections: UIPopoverArrowDirection.Any, 
                                        animated: true)

非常感谢任何帮助

2 个答案:

答案 0 :(得分:6)

你别无选择。事实上,你已经解决了这个问题。正如您已经说过的,解决方案是在您的应用中启用纵向方向。您不必在任何其他视图控制器中使用它,但必须将其包含在应用程序允许的方向中,因为您尝试显示的这个视图控制器需要它。如果视图控制器需要的内容与应用程序允许的内容之间的交集为空,则应用程序将崩溃(如您所见)。

答案 1 :(得分:2)

稍微高一点,问题是你的应用只支持横向,但UIImagePickerController需要在你的应用中支持肖像(但没有一个视图控制器,这没有任何意义,但无论如何。 ..)

因此,处理此问题的另一种方法是寻找可以执行相同操作的UIImagePickerController的替代方法。这是一个运作良好的。虽然代码在几年内没有更新,但它与ARC兼容。

https://github.com/B-Sides/ELCImagePickerController

它非常精彩,可以帮助您避免许多疯狂,特别是如果您不想(或不能)支持应用中的肖像模式。