【问题标题】:UIImage is not showing after selecting image from gallery or camera从图库或相机中选择图像后,UIImage 未显示
【发布时间】:2019-01-12 06:41:19
【问题描述】:

我正在尝试从相机或图库中选择图像,并在我的图像视图中将所选图像显示到屏幕上。但它没有显示。

  func imagePickerController(_ picker: UIImagePickerController,
                               didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

        guard let selectedImage = info[.originalImage] as? UIImage else {
            fatalError("Expected a dictionary containing an image, but was provided the following: \(info)")
        }

        imageview.image = selectedImage

        dismiss(animated: true, completion: nil)
    }

我错过了什么?

就我而言,断点函数根本没有调用

【问题讨论】:

    标签: ios swift xcode uiimage uiimagepickercontroller


    【解决方案1】:

    如果你的断点函数没有在调用,那么我认为你没有在 viewDidLoad() 中设置 imagePicker 委托

    override func viewDidLoad() {
         super.viewDidLoad()
         imagePicker.delegate = self   
       }
    

    【讨论】:

      【解决方案2】:

      我之前遇到过同样的问题,并通过设置延迟图像来解决它,如下所示:

      DispatchQueue.main.asyncAfter(deadline: .now() + 1.0, execute: {
          self.imageview.image = selectedImage
      })
      

      希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        确保您已将 UIImagePickerControllerDelegate 添加到您的班级并设置了您的 UIImagePickerController 实例委托:

        class PickerViewController: UIViewController, UIImagePickerControllerDelegate {
            var pickerController = UIImagePickerController()
        
            override func viewDidLoad() {
                super.viewDidLoad()
                pickerController.delegate = self
            }
        }
        

        另外,最好关闭发送给此委托的picker 参数:

        func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
            ...
        
            picker.dismiss(animated: true, completion: nil)
        }
        

        【讨论】:

        • 这是不对的。您建议使用旧参数[String:Any] 的委托方法。所以他只是创建了一个新的方法
        • @RobertDresler 你是对的。但是问题在于设置委托。我会编辑答案。
        • 对不起,你建议了好东西picker.dismiss,我只是没注意到,因为你没有写下你正在做这个改变
        • @RobertDresler 看来他使用dismiss 没有问题,所以无论如何都没有必要。不过谢谢。
        • @RobertDresler 回到答案 ;-)
        猜你喜欢
        • 2017-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多