标签: photosui

有没有办法让 SwiftUI 中的 PhotosPicker 使用相机代替?

有没有办法让 SwiftUI 中的 PhotosUI PhotosPicker 直接从相机获取照片?我正在尝试更改应用程序中的 PhotosPickers 以使用相机,而不是强制用户从图像库中选择图像。有没有办法像使用 ImagePicker 一样指定 PhotosPicker 图像的来源?

我在网上搜索了很多关于 PhotoPicker 的文章,但没有一个示例有让它使用相机的方法。我应该硬着头皮将所有内容切换到图像选择器,还是有办法让 PhotoPicker 使用相机?

谢谢。

uikit swift swiftui photosui

6
推荐指数
1
解决办法
2956
查看次数

如何从 SwiftUI 调用 PHPhotoLibrary presentLimitedLibraryPicker?

从 SwiftUI 调用 PHPhotoLibrary 的 presentLimitedLibraryPicker 方法的正确方法是什么?

该方法需要一个 UIViewController,而我在 SwiftUI 中没有。

我尝试使用 UIViewControllerRepresentable 来创建一个 UIViewController,它可以工作,但结果是呈现了两个视图控制器,一个是我用 UIViewControllerRepresentable 创建的,另一个是有限的库选择器。

两个视图控制器都需要关闭才能到达原始屏幕,这是不可取的。

总结一下我看到的问题:

  1. presentLimitedLibraryPicker 通过传递一个 ViewController 来工作。
  2. 这让我创建并呈现一个虚拟的 ViewController,以便我可以调用该方法。
  3. 无法获得对 Limited Library Picker 的引用,它也不提供委托。所以我无法检测到 Limited Library Picker 控制器何时被解除。

这是我的尝试(它显示了选择器,但是当您关闭它时,您也需要关闭额外的虚拟视图控制器:

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)

ios swiftui photosui

3
推荐指数
1
解决办法
1576
查看次数

iOS 14:PHPickerViewController 有没有办法同时加载所有资源 PHPickerResult

目前,我正在尝试深入研究 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 swift phpickerviewcontroller phpicker photosui

2
推荐指数
1
解决办法
5955
查看次数

使用 @available 存储属性是不可能的

我想使用仅在 >= iOS 16 中可用的功能,因此我使用 @available 标志,但它不起作用,因为“存储的属性无法用 '@available' 标记为可能不可用”

 @available(iOS 16.0, *) @State private var photoPickerItems = [PhotosPickerItem]()
Run Code Online (Sandbox Code Playgroud)

swift swiftui photosui

1
推荐指数
1
解决办法
5889
查看次数