UIImagePicker не работает должным образом - PullRequest
0 голосов
/ 01 июля 2018

Я пытаюсь разрешить пользователям изменять изображение своего профиля и сохранять его в Firebase. Я построил код, и мое приложение работает. Тем не менее, я не вижу возможности изменить изображение профиля. Мой код ниже:

import UIKit
import Firebase

class EditProfileVC: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(profileImageView)
        setupProfileImageView()

        self.view.backgroundColor = UIColor.white
    }

    func setupProfileImageView() {
        profileImageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        profileImageView.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 100).isActive=true
        profileImageView.widthAnchor.constraint(equalToConstant: 150).isActive = true
        profileImageView.heightAnchor.constraint(equalToConstant: 150).isActive = true
    }

    let profileImageView: UIImageView = {
        let imageView = UIImageView()
        imageView.image = UIImage(named: "users")
        imageView.translatesAutoresizingMaskIntoConstraints = false
        imageView.contentMode = .scaleAspectFill

        imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleSelectProfileImageView)))
        imageView.isUserInteractionEnabled = true
        return imageView
    }()
}

Я также создал файл расширения, который обрабатывает imagePicker:

import UIKit

extension EditProfileVC: UIImagePickerControllerDelegate, UINavigationControllerDelegate{
    @objc func handleSelectProfileImageView() {
        let picker = UIImagePickerController()
        picker.delegate = self
        picker.allowsEditing = true

        present(picker, animated: true, completion: nil)
    }

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        print(info)
    }

    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        print("Canceled Picker")
        dismiss(animated: true, completion: nil)
    }

    func imagePickerController(picker: UIImagePickerController,
                               didFinishPickingMediaWithInfo info: [String :   AnyObject])
        {
        if let img = info[UIImagePickerControllerOriginalImage] as? UIImage       {

            profileImageView.image = img
        }
    }
}

Есть что-то, что я не подключаю правильно или мне не хватает ключевой части кода?

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Я использовал что-то подобное в своих проектах.

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])
{
    var selectedImageFromPicker: UIImage?

    if let editedImage = info["UIImagePickerControllerEditedImage"] as? UIImage {
        selectedImageFromPicker = editedImage

    } else if let originalImage = info["UIImagePickerControllerOriginalImage"] as? UIImage {
        selectedImageFromPicker = originalImage

    }
    if let selectedImage = selectedImageFromPicker {
        userImg = selectedImage

    }
    userImageView.image = userImg
    dismiss(animated: true, completion: nil)
}

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    dismiss(animated: true, completion: nil)
}
0 голосов
/ 01 июля 2018

Удалите этот блок кода из начала вашего кода, потому что он дублируется с 1 заглавной буквой, и я думаю, что вы назначаете изображение для дубликата.

let ProfileImageView: UIImageView = {
let imageView = UIImageView()
imageView.image = UIImage(named: "users")
imageView.translatesAutoresizingMaskIntoConstraints = false
return imageView
}()
...