从选择器中选择图像后,UIImageView不会更新新图像。甚至没有在didFinishPickingMediaWithInfo上打印信息

时间:2019-05-09 20:53:24

标签: swift uiimageview uiimagepickercontroller

一切似乎都正常,单击图像,选择图像。信息也打印在控制台上,并在其中显示信息。它只是没有上传我的个人资料图片。没有崩溃,我也尝试不更新主线程。 我正在使用Swift 5。 我使用SnapKit进行约束,它似乎运行得很好。

import UIKit
import SnapKit
import Firebase
import AlamofireImage

class ProfileViewController: UIViewController {

    lazy var profilePic: UIImageView = {
        let image = UIImageView()
        image.frame =  CGRect(x: 0, y: 0, width: 200, height: 200)
        image.layer.cornerRadius =  image.frame.height/2
        image.layer.masksToBounds = true
        image.isUserInteractionEnabled = true
        let img = ProfileViewController.scaleUIImageToSize(image: #imageLiteral(resourceName: "user"), size: CGSize(width: 200, height: 200))
        image.image = img
        return image
    }()

  override func viewDidLoad() {
        super.viewDidLoad()
        setupSubviews()
        setUpGestures()
    }
func setupSubviews() {

        //Profile Image
        view.addSubview(profilePic)

        self.profilePic.snp.makeConstraints { make in
            make.top.topMargin.equalTo(view.snp_topMargin).offset(5)
            make.left.leftMargin.equalTo(view.snp_leftMargin).offset(2)
        }

}

    func setUpGestures() {
        let tapForProfilePic = UITapGestureRecognizer(target: self, action: #selector(handleSelectProfilePic))
        profilePic.addGestureRecognizer(tapForProfilePic)

    }

extension ProfileViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    @objc func handleSelectProfilePic() {
        let picker = UIImagePickerController()
        picker.delegate = self
        picker.allowsEditing = true
        picker.sourceType = .photoLibrary
        picker.mediaTypes = ["public.image", "public.movie"]
        present(picker, animated: true, completion: nil)
    }

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        print("\(info)")
        if let image = info[.originalImage] as? UIImage {
            DispatchQueue.main.async {
                let size = CGSize(width: 200, height: 200)
                let img = image.af_imageScaled(to: size)
                self.profilePic.image = img
                self.profilePic.setNeedsDisplay()
            }
        }
        else if let image = info[.editedImage] as? UIImage {
            DispatchQueue.main.async {
                let size = CGSize(width: 200, height: 200)
                let img = image.af_imageScaled(to: size)
                self.profilePic.image = img
                self.profilePic.setNeedsDisplay()
            }
        }

        picker.dismiss(animated: true, completion: nil)
    }
}

0 个答案:

没有答案