Я пытаюсь заполнить изображение в UIImageView после того, как сделаю снимок или выберу изображение из моей библиотеки фотографий.

Вот код, управляющий активацией камеры и фото-библиотеки:

@IBAction func activateCmera(_ sender: Any) {
    if (UIImagePickerController.isSourceTypeAvailable(.camera)) {
        let imagePicker = UIImagePickerController()
        imagePicker.delegate = self
        imagePicker.sourceType = .camera
        imagePicker.allowsEditing = false
        self.present(imagePicker, animated: true, completion: nil)
    }
}


@IBAction func activatePhotoLib(_ sender: Any) {
    if (UIImagePickerController.isSourceTypeAvailable(.photoLibrary)) {
        let imagePicker = UIImagePickerController()
        imagePicker.delegate = self
        imagePicker.sourceType = .photoLibrary
        imagePicker.allowsEditing = false
        self.present(imagePicker, animated: true, completion: nil)
    }
}

Вот код, который заполняет изображение в UIImageView:

@IBOutlet weak var imageView: UIImageView!

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
    let image = info[UIImagePickerControllerOriginalImage] as! UIImage
    self.imageView.contentMode = .scaleAspectFit
    self.imageView.image = image
    self.dismiss(animated: true, completion: nil);
}

В настоящее время после того, как я сделаю снимок своей камерой или выберу изображение из моей фото-библиотеки, я перенаправляюсь на начальный вид приложения без обновления пространства UIImageView с фотографией.

Спасибо за любую помощь, спасибо!

0
Jmuru 27 Ноя 2016 в 10:35

2 ответа

Похоже, это проблема, связанная с тем, что XCode не может объяснить, что синтаксис функции imagePickerController изменился (начиная со Swift 3). Вы найдете эти два способа написания функции по всему Интернету. Вы также сможете использовать оба в XCode без каких-либо ошибок. Но только второй действительно получит изображение должным образом.

(Option 1 - doesn't work, but XCode doesn't flag it):
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { }

(Option 2 - this is the right syntax!):
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { }
0
lucius degeer 25 Июл 2017 в 19:30

** Вам нужно сохранить UIImagePickerController как Global Object, после этого вам нужно нажать этот код на свою функцию действия **

@objc func getImage() {

    imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary

    imagePicker.allowsEditing = false

    imagePicker.modalPresentationStyle = .overCurrentContext

    present(imagePicker, animated: true)

}

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

    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
    imageView.image = image
 }

self.dismiss(animated: true, completion: nil);

}
0
Eduardo Debernardi Grajales 17 Ноя 2017 в 16:08