用途:指导在 Apple 平台实现照片选择、受限图库访问与保存到相册,采用隐私优先模式。
主要能力:区分 SwiftUI PhotosPicker(iOS 16+)与 UIKit PHPickerViewController(iOS 14+),二者无需图库权限;支持单选、多选、maxSelectionCount、matching 过滤(截图、录屏、慢动作、电影视频、景深、连拍,以及 .any/.all/.not 组合);iOS 17+ 支持内嵌样式 .inline/.compact、selectionBehavior: .continuous、隐藏配件与禁用能力;处理 .limited 授权并用 presentLimitedLibraryPicker 扩展选择;用 PHAssetCreationRequest 保存照片;用自定义 Transferable 加载任意格式图片;通过 PHPhotoLibraryChangeObserver 监听变更。
使用方式:先判断需求——仅选图用系统选择器,无需权限;浏览完整图库或保存需 PHPhotoLibrary 授权,分别请求 .readWrite 或 .addOnly。Info.plist 需配置 NSPhotoLibraryUsageDescription,保存还需 NSPhotoLibraryAddUsageDescription;自行处理受限提示时加 PHPhotoLibraryPreventAutomaticLimitedAccessAlert。
限制:避免使用已弃用的 UIImagePickerController;不要为选图过度申请完整权限;需处理 .limited 状态与 Transferable 加载失败;异步加载避免阻塞 UI;默认转码可能丢失 HDR,可用 preferredItemEncoding: .current 或 preferredAssetRepresentationMode = .current 保留原格式;电影模式视频选择器返回已渲染版本。具体平台版本与实现细节以官方资料为准。