CameraPicker

一个用于 SwiftUI 的相机选择器。

🚧 仍在开发中 🚧

目前,此软件包的主版本号仍为 0,这意味着公共接口可能会进行讨论和设计更改。发布版本之间可能会出现重大更改。

欢迎通过 Issues 或 Discussions 提供反馈,我会尽快回复。

如果您想尝试一下,目前它在底层使用 UIImagePickerController,并处理拍摄单张静态图像或视频,并将选择的照片保存到照片库。

将此软件包作为依赖项,从主分支或最新标签添加到您的 iOS 项目。请确保将 NSCameraUsageDescription 键添加到您的应用程序的 Info.plist 文件中。对于捕获视频,您需要添加 NSMicrophoneUsageDescription,对于保存捕获的图像或视频,添加 NSPhotoLibraryAddUsageDescription

基本示例代码

import SwiftUI
import AVKit
import CameraPicker

struct ContentView: View {
    @State private var pickedItem: (any CameraPickerItem)?

    var body: some View {
        VStack {
            CameraPicker(
                "Capture an Image",
                selection: $pickedItem,
                preferredMediaTypes: [.image, .movie()]
            )

            switch pickedItem {
                case let pickedItem as ImageCameraPickerItem:
                    pickedItem.mediaType
                        .resizable()
                        .scaledToFit()
                        .frame(width: 400, height: 400)
                case let pickedItem as MovieCameraPickerItem:
                    VideoPlayer(player: pickedItem.mediaType)
                        .frame(width: 400, height: 400)
                default:
                    EmptyView()
            }
        }
    }
}

上面的代码显示一个按钮。点击后,它将打开相机并显示用于选择图像或视频的控件。一旦捕获了图像或视频,选择器将关闭,图像或视频将显示在 VStack 中。

要将 CameraPickerItem 保存到照片库,只需调用 save()

Button("Save") {
    Task {
        try? await pickedItem?.save()
    }
}