SuperAPI AI 工具集

photokit

编程与开发

查看项目

更新于 10-16 05:52

技能介绍

用途:构建或审查媒体选择、相机拍摄、照片库查询与图片缓存流程。技术栈为 PhotosUI(PhotosPicker)、PhotoKit(PHPhotoLibrary)与 AVFoundation,目标 Swift 6.3 / iOS 26+。

主要能力:

  • 选择器策略:PhotosPicker(SwiftUI)与 PHPickerViewController(UIKit)均为进程外运行、无需权限,适合用户挑选照片/视频;PHPhotoLibrary 直接 API 适合自定义相册、后台同步与资源删除,需 NSPhotoLibraryUsageDescription;AVCaptureSession 适合实时取景与拍照录像,需 NSCameraUsageDescription。标准媒体选择优先用 PhotosPicker。
  • 权限:直接访问 PHPhotoLibrary 时请求授权并处理 .limited(可用 presentLimitedLibraryPicker)。Info.plist 需含 NSPhotoLibraryUsageDescription(读写)或 NSPhotoLibraryAddUsageDescription(仅写入保存)。
  • 图片加载与缓存:用 PHCachingImageManager 生成网格缩略图;滚动进入时 startCachingImages(for:targetSize:contentMode:options:);PHImageRequestOptions 用 deliveryMode = .opportunistic;滚动移出时取消过期请求。
  • 相机边界:AVCaptureSession 会话配置在专用串行后台队列,勿在 @MainActor;beginConfiguration() 配 defer { commitConfiguration() };取景器用 UIViewRepresentable 加 AVCaptureVideoPreviewLayer 嵌入 SwiftUI。

使用方式:按任务路由,选择器配方、相机拍摄模式、图片加载与缓存、格式转换与压缩、AV 播放各有对应参考文档(资料列出章节与参考标题,未提供具体链接与代码全文)。

常见错误:PhotosPicker 足够时仍申请完整相册权限;网格硬编码 .highQualityFormat;在 @MainActor 启动 AVCaptureSession;忽略 .limited;未降采样即同时加载多张全分辨率图。

限制:资料未提供具体价格、平台范围与安装命令;具体接口与代码示例以官方文档为准。