在 SwiftUI 中使用 ImagePicker

Dar*_*son 2 ios swift swiftui

我是 SwiftUI 新手。我想制作一个具有图像选择器的应用程序。

\n

我找到这篇文章: https: //ishtiz.com/swiftui/image-picker-in-swiftui

\n

它说:

\n
\n

要在 SwiftUI 中实现图像选择器,您可以使用ImagePickerSwiftUI 框架提供的结构体。该结构有一个pickImage()方法,可以向用户呈现图像选择器,并将所选图像作为 UIImage 对象返回。

\n
\n

提供此示例代码:

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

我将代码添加到我的项目中,但它没有\xe2\x80\x99t 构建:

\n
\n

在范围内找不到“ImagePicker”

\n
\n

我需要进口一些东西吗?

\n

Nav*_*rar 5

尝试导入 PhotosUI

对于低于 16.0 的 iOS 版本,您可以参考教程

对于 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)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)