这是面向 iOS 开发的 Photo Library API 参考,整理系统照片选择与图库访问相关框架的常见用法。
用途:在应用中让用户选择照片或视频、读取与写入系统照片图库、管理相册与资源。
主要能力:
- PHPickerViewController(iOS 14+):无需权限的系统选择器,可配置 selectionLimit、PHPickerFilter(images、videos、livePhotos,以及 any(of:)、all(of:)、not(...) 组合),支持 assetIdentifier 与 NSItemProvider 加载 UIImage、Data 或 PHLivePhoto。
- SwiftUI PhotosPicker(iOS 16+):支持单选/多选、maxSelectionCount、筛选、selectionBehavior(default、ordered、continuous)、photosPickerStyle(presentation、inline、compact)、隐藏搜索或相册等能力,以及 iOS 17 的 preferredItemEncoding 保留 HDR。
- 通过 loadTransferable(type: Data.self) 或自定义 Transferable 加载选中项。
- PHPhotoLibrary:查询与请求 .readWrite / .addOnly 授权,处理 .notDetermined、.restricted、.denied、.authorized、.limited 状态,presentLimitedLibraryPicker,performChanges 异步提交修改,注册 PHPhotoLibraryChangeObserver 监听变化。
- PHAsset:按媒体类型或条件 fetchAssets,读取 localIdentifier、mediaType、creationDate、location、isFavorite 等属性。
- PHAssetCreationRequest:从 UIImage、文件 URL 或资源创建资源,设置 creationDate 与 location,使用 placeholderForCreatedAsset 获取新建资源标识。
- PHFetchResult 的索引访问、objects(at:)、enumerateObjects;PHImageManager 请求图片与视频、设置 deliveryMode、resizeMode、isNetworkAccessAllowed。
使用方式:引用 PhotosUI 与 Photos,配置选择器或 photo library 对象,在 delegate 或 async 回调中加载数据;写入操作须放入 performChanges 闭包。
适用场景:相册选图、保存拍摄结果、批量导入、受限图库访问、自定义相册管理。
限制:仅限 Apple 平台;不同能力标注了最低系统版本(iOS 14/15/16/17+);完整权限与受限访问行为受系统与用户选择影响;资料未提供价格、性能数据或完整示例项目。