UIImageView не обновляет новое изображение после выбора этого изображения из средства выбора.Даже не печатая информацию на didFinishPickingMediaWithInfo - PullRequest
0 голосов
/ 09 мая 2019

Кажется, все работает, изображение нажимается, оно выбирает изображение.Информация также выводится на консоль и отображает информацию там.Это просто не загружает изображение моего profilepic.Там нет сбоя, и я попытался без обновления основного потока, а также.Я использую 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)
    }
}
...