【问题标题】:How do you display an image in a UIImageView that was selected using UIImagePickerController?如何在使用 UIImagePickerController 选择的 UIImageView 中显示图像?
【发布时间】:2020-09-06 04:38:37
【问题描述】:

我是 Xcode 和 Swift 的新手,我试图在使用 UIImagePickerController 选择的 UIImageView 中显示图像。我使用@IBOutlet 链接了UIImageView,并在底部放置了一些if 语句以允许编辑所选图片,但是当我的代码中弹出错误时我被卡住了。我很确定问题与我引用UIImageView 的方式有关,但我不知道如何以不同的方式进行。我刚注册了这个账号来问这个问题,所以请原谅我发这个帖子的方式。

代码如下:

import UIKit

class ViewController: UIViewController {

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

    @IBAction func openPhotosButton(_ sender: UIButton) {
        showImagePickerController()
    }

    @IBOutlet weak var characterView: UIImageView!

}

extension ViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {

    func showImagePickerController() {
        let imagePickerController = UIImagePickerController()
        imagePickerController.delegate = self
        imagePickerController.allowsEditing = true
        imagePickerController.sourceType = .photoLibrary
        present(imagePickerController, animated: true)
    }

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

        if let editedImage = info[UIImagePickerController.InfoKey.editedImage] as UIImage {
            characterView.image = editedImage
        }
        else if let originalImage = info[UIImagePickerController.InfoKey.originalImage] as UIImage {
            characterView.image = originalImage
        }

        dismiss(animated: true)
    }
}

图片来自 Xcode:

【问题讨论】:

标签: ios swift uiimageview uiimagepickercontroller


【解决方案1】:

把你的方法改成这个

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

        if let editedImage = info[UIImagePickerController.InfoKey.editedImage] as? UIImage {
            characterView.image = editedImage
        }
        else if let originalImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
            characterView.image = originalImage
        }

        dismiss(animated: true)
    }

【讨论】:

  • 非常感谢!这就像一个魅力!所以改变是我必须使用'.InfoKey'和我们'as?而不是'as'?
  • 我也在尝试让这个应用上传多张照片并将它们组织在一个相册中。我可以使用任何快速提示或特定课程吗?
猜你喜欢
  • 1970-01-01
  • 2017-03-30
  • 1970-01-01
  • 1970-01-01
  • 2015-06-11
  • 1970-01-01
  • 1970-01-01
  • 2018-02-26
  • 2016-01-01
相关资源
最近更新 更多