ios 在SwiftUI中使用图像选取器

wa7juj8i  于 2023-01-10  发布在  iOS
关注(0)|答案(1)|浏览(173)

我是SwiftUI的新手。我想做一个有图像选择器的应用程序。
我发现这篇文章:https://ishtiz.com/swiftui/image-picker-in-swiftui
上面写着:
要在SwiftUI中实现图像选取器,可以使用SwiftUI框架提供的ImagePicker结构体。此结构体具有pickImage()方法,该方法向用户显示图像选取器并将选定图像作为UIImage对象返回。
提供以下示例代码:

struct ContentView: View {
  @State private var image: UIImage?
  var body: some View {
    VStack {
      if image != nil {
        Image(uiImage: image!)
          .resizable()
          .scaledToFit()
      }
      Button("Select Image") {
        self.image = ImagePicker.pickImage()
      }
    }
  }
}

我已将代码添加到项目中,但无法生成:
在范围内找不到"ImagePicker"
我需要导入什么吗?

b4lqfgs4

b4lqfgs41#

尝试导入PhotosUI
对于低于16.0的iOS版本,您可以引用tutorial
对于iOS 16.0 +,您可以使用**PhotoPicker**

import PhotosUI
import SwiftUI

@available(iOS 16.0, *)
struct PhotosPickerDemo: View {
    @State private var selectedItem: PhotosPickerItem? = nil
    @State private var selectedImageData: Data? = nil

    var body: some View {
        PhotosPicker(
            selection: $selectedItem,
            matching: .images,
            photoLibrary: .shared()) {
                Text("Select a photo")
            }
            .onChange(of: selectedItem) { newItem in
                Task {
                    // Retrieve selected asset in the form of Data
                    if let data = try? await newItem?.loadTransferable(type: Data.self) {
                        selectedImageData = data
                    }
                }
            }

        if let selectedImageData,
           let uiImage = UIImage(data: selectedImageData) {
            Image(uiImage: uiImage)
                .resizable()
                .scaledToFit()
                .frame(width: 250, height: 250)
        }
    }
}

相关问题