首页 > 解决方案 > 在 SwiftUI 中实现图像裁剪器视图工具

问题描述

我是 SwiftUI 的新手,我目前正在尝试实现裁剪图像视图,以确保我的应用程序的所有图像都是标准化的比例。从图像选择器中选择图像后,我想显示图像裁剪视图,其中我有一个确定的图像纵横比,我可以通过四处移动和缩小来改变它。我试图在网上找到代码,但几乎所有相关的东西似乎都适用于旧版本的 swift,我不确定如何使用 Swift UI 重现。

这是我的图像选择器代码供参考:



import SwiftUI
import PhotosUI

struct ImagePicker : UIViewControllerRepresentable {
    
    @Binding var picker : Bool
    @Binding var img_Data : Data
    
    func makeCoordinator() -> Coordinator {
        return ImagePicker.Coordinator(parent: self)
    }
    
    func makeUIViewController(context: Context) -> PHPickerViewController {
        
        var config = PHPickerConfiguration()
        config.selectionLimit = 1
        
        let controller = PHPickerViewController(configuration: config)
        
        controller.delegate = context.coordinator
        
        return controller
    }
    
    func updateUIViewController(_ uiViewController: PHPickerViewController, context: Context) {
        
        
    }
    
    class Coordinator : NSObject,PHPickerViewControllerDelegate{
        
        var parent : ImagePicker
        
        init(parent : ImagePicker) {
            self.parent = parent
        }
        
        func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
            
            if results.isEmpty{
                self.parent.picker.toggle()
                return
            }
            
            let item = results.first!.itemProvider
            
            if item.canLoadObject(ofClass: UIImage.self){
                
                item.loadObject(ofClass: UIImage.self) { (image, err) in
                    if err != nil{return}
                    
                    let imageData = image as! UIImage
                    
                    DispatchQueue.main.async {
                        self.parent.img_Data = imageData.jpegData(compressionQuality: 0.5)!
                        self.parent.picker.toggle()
                    }
                }
            }
        }
    }
}

我想根据需要裁剪 img_Data 。如果您能指出我已经完成的示例,那就太好了!谢谢

编辑:我在这个 GitHub repo 上看到了这个例子:https ://github.com/nkopilovskii/ImageCropper

我很困惑如何在安装 pod 后根据模块初始化将此 ImageCropper 与我的 Swift 代码集成。我将在哪里初始化视图控制器并在我的图像选择器代码中显示导航控制器。谢谢你的帮助!

标签: iosswiftswiftui

解决方案


推荐阅读