当前位置: 首页 > 面试题库 >

如何在SwiftUI中打开ImagePicker?

刘昌翰
2023-03-14
问题内容

我需要使用SwiftUI在我的应用程序中打开ImagePicker,我该怎么做?

我考虑过使用UIImagePickerController,但是我不知道如何在SwiftUI中做到这一点。


问题答案:

Xcode 11.4的清理版本可以通过SPM作为Swift软件包获得:

https://github.com/ralfebert/ImagePickerView

资源:

import SwiftUI

public struct ImagePickerView: UIViewControllerRepresentable {

    private let sourceType: UIImagePickerController.SourceType
    private let onImagePicked: (UIImage) -> Void
    @Environment(\.presentationMode) private var presentationMode

    public init(sourceType: UIImagePickerController.SourceType, onImagePicked: @escaping (UIImage) -> Void) {
        self.sourceType = sourceType
        self.onImagePicked = onImagePicked
    }

    public func makeUIViewController(context: Context) -> UIImagePickerController {
        let picker = UIImagePickerController()
        picker.sourceType = self.sourceType
        picker.delegate = context.coordinator
        return picker
    }

    public func updateUIViewController(_ uiViewController: UIImagePickerController, context: Context) {}

    public func makeCoordinator() -> Coordinator {
        Coordinator(
            onDismiss: { self.presentationMode.wrappedValue.dismiss() },
            onImagePicked: self.onImagePicked
        )
    }

    final public class Coordinator: NSObject, UINavigationControllerDelegate, UIImagePickerControllerDelegate {

        private let onDismiss: () -> Void
        private let onImagePicked: (UIImage) -> Void

        init(onDismiss: @escaping () -> Void, onImagePicked: @escaping (UIImage) -> Void) {
            self.onDismiss = onDismiss
            self.onImagePicked = onImagePicked
        }

        public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
            if let image = info[.originalImage] as? UIImage {
                self.onImagePicked(image)
            }
            self.onDismiss()
        }

        public func imagePickerControllerDidCancel(_: UIImagePickerController) {
            self.onDismiss()
        }

    }

}


 类似资料:
  • 问题内容: 我是SwiftUI的新手。我有三个视图,我希望它们在PageView中。我想像滑动浏览器一样滑动每个“视图”,并希望这些小点表示我所在的视图。 问题答案: 页面控制 您的页面浏览量 您的页面视图控制器 假设您有一个类似的观点 您可以像这样在主swiftUI视图中使用此组件。

  • 在以前版本的swift中,您可以在ViewController中创建AVCaptureVideoPreviewLayer,并使用view将其添加到默认视图中。层添加子层(预览层)。 在SwiftUI ContentView中如何实现这一点?SwiftUI中的所有视图类型似乎都没有addSublayer。没有文本(“你好,世界”)。层添加子层。。。。 我尝试添加previewLayer到Conten

  • 问题内容: 已在Swift3中弃用。任何人都可以提供一些示例来说明尝试打开URL时替换的工作方式吗? 问题答案: 所有你需要的是:

  • 我不熟悉conda和mac(我主要使用Ubuntu和pip)。mac电脑上有康达外壳吗(我想我在什么地方读到没有)。 如果是这种情况,我应该如何运行命令,如: 正如这里所问:https://github.com/datitran/face2face-demo 然后我打开了蟒蛇导航仪 上述步骤正确吗?有没有办法通过Mac中的shell实现这一点?(我正在使用macOS Catalina版本10.15

  • 我想知道是否有人知道如何在Swiftui中使用mopub。我一直在尝试,我想知道是否有人知道如何在SwiftUI中使用Mopub的横幅广告。多谢了。

  • 问题内容: 我购买用来帮助我理解SSIS的书似乎掩盖了这一点,并且我想确切地知道在SSIS中打开FastParse的方法是什么? 问题答案: 设置快速解析(从此处开始) 用鼠标右键单击平面文件源或数据转换转换,然后单击显示高级编辑器。 在“高级编辑器”对话框中,单击“输入和输出属性”选项卡。 在“输入和输出”窗格中,单击要为其启用快速解析的列。 在“属性”窗口中,展开“自定义属性”节点,然后将Fa