一个用于 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()
}
}