PhotosUI for Swift:照片与视频选择完整指南
1. 什么是 PhotosUI 及其用途
PhotosUI 是 Apple 提供的框架,为设备媒体库操作提供现成的用户界面。它属于 UIKit 的一部分,是底层 Photos 框架的上层封装。PhotosUI 的主要目标是让开发者能够快速、标准化地实现照片和视频选择功能,无需深入处理复杂的权限管理、相册导航和缩略图显示逻辑。
为什么需要它?首先,它能节省时间。无需从头编写自己的媒体浏览器,您可以直接获得一个用户熟悉且经过打磨的界面。其次,它确保安全性和符合 Apple 指南。PhotosUI 自动处理库访问请求(通过 PHPhotoLibrary),并正确适配新版本 iOS,包括隐私和有限访问支持。第三,它灵活可定制:您可以调整外观、允许多选、仅筛选照片或视频,甚至配置编辑行为。
主要使用场景:个人资料头像、消息附件、社交媒体视频上传、拼图制作、滤镜和编辑器集成。PhotosUI 非常适合任何需要访问用户媒体库的应用。
2. 安装方法
PhotosUI 是 iOS SDK 标准库的一部分。无需通过 CocoaPods、Swift Package Manager 或 Carthage 安装。只需在项目中导入框架即可。
重要提示:PhotosUI 从 iOS 8.0 起可用。但要使用所有现代功能(如 PHPickerViewController),建议使用 iOS 14+。
// 导入框架
import PhotosUI
无需任何终端命令。只需在需要使用媒体选择功能的文件中添加 import PhotosUI。
3. 快速上手:最小可用示例
向用户展示照片选择界面的最简单方式是使用 PHPickerViewController(iOS 14+)。该控制器在独立进程中运行,提高了性能和安全性。
示例:屏幕上的按钮,点击后打开选择器。
import UIKit
import PhotosUI
class ViewController: UIViewController, PHPickerViewControllerDelegate {
@IBAction func selectPhotoTapped(_ sender: UIButton) {
// 1. 创建选择器配置
var config = PHPickerConfiguration()
config.selectionLimit = 1 // 单张照片
config.filter = .images // 仅图片
// 2. 创建控制器
let picker = PHPickerViewController(configuration: config)
picker.delegate = self
// 3. 显示选择器
present(picker, animated: true)
}
// MARK: - PHPickerViewControllerDelegate
func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
dismiss(animated: true)
guard let provider = results.first?.itemProvider else { return }
// 4. 加载 UIImage
if provider.canLoadObject(ofClass: UIImage.self) {
provider.loadObject(ofClass: UIImage.self) { image, error in
DispatchQueue.main.async {
// 使用获取到的图片
print("图片已加载:\(String(describing: image))")
}
}
}
}
}