有没有办法让 SwiftUI 中的 PhotosUI PhotosPicker 直接从相机获取照片?我正在尝试更改应用程序中的 PhotosPickers 以使用相机,而不是强制用户从图像库中选择图像。有没有办法像使用 ImagePicker 一样指定 PhotosPicker 图像的来源?
我在网上搜索了很多关于 PhotoPicker 的文章,但没有一个示例有让它使用相机的方法。我应该硬着头皮将所有内容切换到图像选择器,还是有办法让 PhotoPicker 使用相机?
谢谢。
从 SwiftUI 调用 PHPhotoLibrary 的 presentLimitedLibraryPicker 方法的正确方法是什么?
该方法需要一个 UIViewController,而我在 SwiftUI 中没有。
我尝试使用 UIViewControllerRepresentable 来创建一个 UIViewController,它可以工作,但结果是呈现了两个视图控制器,一个是我用 UIViewControllerRepresentable 创建的,另一个是有限的库选择器。
两个视图控制器都需要关闭才能到达原始屏幕,这是不可取的。
总结一下我看到的问题:
这是我的尝试(它显示了选择器,但是当您关闭它时,您也需要关闭额外的虚拟视图控制器:
import Foundation
import SwiftUI
import Photos
import PhotosUI
struct TestView: View {
@State var showLibraryPicker = false
var body: some View {
NavigationView {
VStack {
Button("Open Library Picker") { showLibraryPicker = true }
}
.navigationBarTitle("Test", displayMode: .inline)
.navigationViewStyle(StackNavigationViewStyle())
.sheet(isPresented: $showLibraryPicker, onDismiss: { print("Dismissed") }) …Run Code Online (Sandbox Code Playgroud) 目前,我正在尝试深入研究 PHPickerViewController 以从照片中同时选择多个图像。所以我想要用户选择的图像数组,我尝试了太多方法但没有运气。这是我的代码,请告诉我有最佳实践吗?
func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
picker.dismiss(animated: true, completion: nil)
var images: [UIImage?] = []
var totalConversionsCompleted = 0
for (index,result) in results.enumerated() {
result.itemProvider.loadObject(ofClass: UIImage.self, completionHandler: { (object, error) in
let image = object as? UIImage
images.append(image)
totalConversionsCompleted += 1
if totalConversionsCompleted == index {
print("completion happen \(images)")
}
})
}
}
Run Code Online (Sandbox Code Playgroud) 我想使用仅在 >= iOS 16 中可用的功能,因此我使用 @available 标志,但它不起作用,因为“存储的属性无法用 '@available' 标记为可能不可用”
@available(iOS 16.0, *) @State private var photoPickerItems = [PhotosPickerItem]()
Run Code Online (Sandbox Code Playgroud)