如何在 iOS 9 和 Swift 中以弹出视图的形式展示 UIImagePickerController

9
我正在尝试在iOS 9 beta 4和Swift的iPad上,通过一个弹出视图来展示相册库。推荐的方法是使用弹出视图,但是UIPopoverController现已弃用。显然现在是通过UIViewController实现,但是我找不到任何文档或样本代码。非常感谢您的帮助!
谢谢!
3个回答

9

上述答案几乎正确,唯一不同的是在调用presentViewController()之前,必须先设置popoverPresentationController中的anchor:

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:之后配置popover presentation controller可能看起来不直观,但是UIKit在您启动演示之后才会创建表示控制器。此外,UIKit必须等到下一个更新周期才能在屏幕上显示新内容。该延迟为您提供了时间来为您的popover配置表示控制器。 - Carl Smith
2
不一定非要设置barButtonItem,也可以设置一个sourceView来呈现弹出窗口。如果您没有一个应该呈现弹出窗口的barButton,这将非常有帮助。 - benrudhart

3

这里我并没有涉及到委托和处理图像选择器的响应,本篇文章旨在探讨使用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中实现? - Mihir Oza

-1
只需在调用图像选择器的函数中添加 imagePicker.delegate = self。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接