【问题标题】:How to present an UIImagePickerController in a Popover with iOS 9 and Swift如何使用 iOS 9 和 Swift 在 Popover 中呈现 UIImagePickerController
【发布时间】:2015-10-28 23:32:32
【问题描述】:

我正在尝试在装有 iOS 9 beta 4 和 Swift 的 iPad 上以弹出框的形式展示照片库。首选方式是通过弹出框,但 UIPopoverController 现在已弃用。显然它现在是通过UIViewController 完成的,但是我找不到任何文档或示例代码。任何帮助将不胜感激!

谢谢!

【问题讨论】:

    标签: ios swift ipad uiviewcontroller


    【解决方案1】:

    上面的答案几乎是正确的,只是popoverPresentationController中的锚必须在调用presentViewController()之前设置:

    let myPicker = UIImagePickerController()
    myPicker.delegate = self
    myPicker.sourceType = .PhotoLibrary
    myPicker.modalPresentationStyle = .Popover
    
    let ppc = myPicker.popoverPresentationController
    ppc?.barButtonItem = sender as? UIBarButtonItem
    ppc?.permittedArrowDirection = .Any
    
    presentViewController(myPicker, animated: true, completion: nil)
    

    【讨论】:

    • 根据 Apple 文档:在调用 presentViewController:animated:completion: 后配置弹出显示控制器可能看起来违反直觉,但 UIKit 在您启动演示之前不会创建演示控制器。此外,UIKit 必须等到下一个更新周期才能在屏幕上显示新内容。该延迟使您有时间为弹出框配置演示控制器。
    • 除了设置 barButtonItem 之外,还可以设置一个 sourceView 来显示弹出框。如果您没有应该从中显示弹出框的 barButton,这将很有帮助。
    【解决方案2】:

    我还没有在这里讨论图像选择器响应的委托和处理,这篇文章的目的只是考虑 UIImagePickerController 的使用,而不是求助于已弃用的类和方法。

    let myPicker = UIImagePickerController()
    myPicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
    
    myPicker.modalPresentationStyle = UIModalPresentationStyle.Popover
    
    self.presentViewController(myPicker, animated: true, completion: nil)
    
    let popper = myPicker.popoverPresentationController
    // returns a UIPopoverPresentationController
    popper?.barButtonItem = sender as? UIBarButtonItem
    

    如果需要请更正

    【讨论】:

    • 在objective-c中怎么做?
    【解决方案3】:

    只需在调用imagepicker的函数中添加imagePicker.delegate = self

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 2015-11-18
      • 2018-01-24
      相关资源
      最近更新 更多