用途:指导在 iOS 上用 AVFoundation 实现自定义相机功能,而非系统相册选择器。适合需要自建拍照/录像界面、控制画质与响应速度的场景。
主要能力:覆盖会话搭建(AVCaptureSession 加输入输出)、SwiftUI 预览、使用 RotationCoordinator(iOS 17+)处理旋转、提升拍照响应(零快门延迟、响应式采集、快速连拍优先、就绪协调器)、延迟处理(deferred processing)、前后摄像头切换、连拍画质优先设置,以及电话来电等会话中断处理。
使用方式:先在 Info.plist 添加 NSCameraUsageDescription,录像还需 NSMicrophoneUsageDescription,并请求相机权限。会话配置必须在专用串行队列执行,禁止在主线程调用 startRunning(),修改会话需 beginConfiguration()/commitConfiguration()。拍照用 AVCapturePhotoOutput,录像用 AVCaptureMovieFileOutput,预览可用 AVCaptureVideoPreviewLayer 包装为 SwiftUI 视图。
限制:只让用户选照片时应使用 PHPicker/PhotosPicker,而不是 AVFoundation;简单采集可用 UIImagePickerController,但定制受限。新响应式 API 有设备要求(如零快门延迟需 iPhone XS 及以上,延迟处理需 iPhone 11 Pro 及以上),且不适用于闪光灯拍照等场景。文中提到的一些成本估算与代码示例细节仅为原文示意,实际以项目为准。