用途:该技能用于实现 iOS 照片库相关功能,包括让用户选图、处理受限相册权限、把照片或视频保存到相机的胶卷,以及观察照片库变化。
主要能力:
- 选图:SwiftUI 使用 PhotosPicker(iOS 16+),UIKit 使用 PHPickerViewController(iOS 14+),二者无需相册权限,系统代为处理隐私。支持单选、多选、maxSelectionCount,以及过滤条件,如 .images、.videos、.livePhotos、.screenshots、.screenRecordings、.sloMoVideos、.cinematicVideos、.depthEffectPhotos、.bursts,并可用 .any、.all、.not 组合。
- 内嵌选择器(iOS 17+):PhotosPicker 可用 .photosPickerStyle(.inline),PHPicker 可作为子视图控制器添加;支持 .continuous 实时选择、隐藏附件与禁用能力(如 .search、.selectionActions)。
- 受限访问:当授权状态为 .limited 时,可用 PHPhotoLibrary.shared().presentLimitedLibraryPicker(from:) 让用户扩充选择,并可注册 PHPhotoLibraryChangeObserver 监听变化。
- 保存到相册:请求 .addOnly 或 .readWrite,在 performChanges 中使用 PHAssetCreationRequest.creationRequestForAsset(from:) 或 addResource(with:fileURL:options:)。
- 加载图片:从 PhotosPickerItem 通过 loadTransferable 异步加载,建议用自定义 Transferable 支持 JPEG/HEIF 等格式,并处理失败与进度。
使用方式:先在 Info.plist 添加 NSPhotoLibraryUsageDescription,需要保存时再添加 NSPhotoLibraryAddUsageDescription;再按需求选择无需权限的系统选择器,或申请 PhotoKit 授权。若自行处理受限提示,可设置 PHPhotoLibraryPreventAutomaticLimitedAccessAlert。
适用场景:SwiftUI 或 UIKit 应用中的照片选择、加载、保存与受限权限管理,以及照片库变化同步。
限制:仅覆盖 iOS 平台;需要针对具体 iOS 版本选择 API;资料未提供 Android、Web 或其他平台支持,也未说明定价、收费、服务端能力或除上述之外的集成方式。