【问题标题】:Set shouldAutorotate to false with Photolibrary使用 Photolibrary 将 shouldAutorotate 设置为 false
【发布时间】:2014-08-01 23:36:55
【问题描述】:

如果我添加一个可以从iPad 访问我的照片库的弹出框,系统总是会崩溃并显示以下消息:

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

但我已经在我的 Projekt 信息中进行了设置,只是为了支持横向模式。

所以我添加了以下功能

override func shouldAutorotate() -> Bool {

    return false
}

可是我不知道怎么用?如果我也在我的应用程序上启用UIInterfaceOrientationPortrait,它工作正常。但我不想支持UIInterfaceOrientationPortrait

我会这样称呼我的弹出框:

var popover: UIPopoverController = UIPopoverController(contentViewController: ImagePickerController)

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

任何帮助将不胜感激

【问题讨论】:

    标签: ios swift uipopovercontroller uiinterfaceorientation shouldautorotate


    【解决方案1】:

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

    【讨论】:

    • 所以你的意思是我只是启用它,但我怎样才能为我的应用程序强制横向模式?
    • 这对于 iOS8/Swift 仍然是最新的吗? stackoverflow.com/questions/12520030/…
    • "但是我如何才能为我的应用程序强制使用横向模式" 通过让属于您的每个视图控制器只允许横向,并确保横向在 Info.plist 列表中排在首位。但是 this 视图控制器,您遇到问题的那个,将纵向显示。
    • 感谢您的帮助!
    • 我的书解释了 iOS 应用定向机制是如何工作的:apeth.com/iOSBook/ch19.html#_rotation
    【解决方案2】:

    在稍高一点的层面上,问题在于您的应用仅支持横向,而 UIImagePickerController 要求您的应用支持纵向(但没有任何视图控制器,这没有任何意义,但无论如何...... )

    所以另一种处理这个问题的方法是寻找一个替代UIImagePickerController 的替代方法。这是一个运作良好的。虽然代码几年没有更新,但它与 ARC 兼容。

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

    它非常棒,可以帮助您避免很多疯狂,特别是如果您不想(或不能)在您的应用中支持纵向模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多