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