微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SwiftUI - 对 不完全是解决方案的解决方案

如何解决SwiftUI - 对 不完全是解决方案的解决方案

我有一个 .onTapGesture 修饰符,当点击它时会显示一个 ImagePicker,然后立即关闭它。


@State private var updateInfo = false

var body: some View {
  HStack {
            placeholder.image
                .resizable()
                .aspectRatio(contentMode: .fill)
                .font(.system(size: 16,weight: .medium))
                .frame(width: 100,height: 100)
                .clipShape(Circle())
                .shadow(color: Color.black.opacity(0.1),radius: 1,x: 0,y: 1)
                .onTapGesture {
                    updateInfo.showImagePicker = true
                }
                .sheet(isPresented: $updateInfo.showImagePicker) {
                    ImagePicker(showImagePicker: $updateInfo.showImagePicker,pickedImage: $updateInfo.image,imageData: $updateInfo.imageData)
                }
        }
    }

这是我的 ImagePicker

import SwiftUI

struct ImagePicker: UIViewControllerRepresentable {
    @Binding var showImagePicker: Bool
    @Binding var pickedImage: Image
    @Binding var imageData: Data
    
    func makeUIViewController(context: UIViewControllerRepresentableContext<ImagePicker>) -> UIImagePickerController {
        
        let imagePicker = UIImagePickerController()
        imagePicker.delegate = context.coordinator
        return imagePicker
        
    }
    
    func updateUIViewController(_ uiViewController: UIImagePickerController,context: Context) {
        return
    }
    
    func makeCoordinator() -> Coordinator {
        Coordinator(self)
    }
    
    class Coordinator: NSObject,UIImagePickerControllerDelegate,UINavigationControllerDelegate {
        
        var parentimagePicker: ImagePicker
        
        init(_ imagePicker: ImagePicker) {
            self.parentimagePicker = imagePicker
        }
        
        func imagePickerController(_ picker: UIImagePickerController,didFinishPickingMediawithInfo info: [UIImagePickerController.InfoKey : Any]) {
            
            let uiImage = info[UIImagePickerController.InfoKey.originalImage] as! UIImage
            
            parentimagePicker.pickedImage = Image(uiImage: uiImage)
           
            if let mediaimage = uiImage.jpegData(compressionQuality: 0.5) {
                parentimagePicker.imageData = mediaimage
            }
            parentimagePicker.showImagePicker = false
        }
        
        func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
            parentimagePicker.showImagePicker = false
        }
    }
}

我一直在控制台中收到此错误对 <_uiimagepickerplaceholderviewcontroller:>

的开始/结束外观转换的调用不平衡

不确定我在哪里转换不正确。我有一个包含三个选项卡的选项卡栏视图。最后一个选项卡有一个导航栏项,用于推送详细信息 updateInfo 视图。

我点击占位符图像,系统会在立即关闭之前显示图像选择器控制器(有点)。我再次点击它,图像选择器控制器就会出现。

关于为什么它第一次被解雇的想法?

解决方法

不完全是解决方案的解决方案

我试图在视图上调用 ImagePickerController 并不断收到不平衡的视图错误。所以我创建了一个完全不同的视图来选择一个新图像。错误尚未解决,但我的问题已解决。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。