Swift ImagePickerController didFinishPickingMediaWithInfo 未触发 [英] Swift ImagePickerController didFinishPickingMediaWithInfo not fired

查看:15
本文介绍了Swift ImagePickerController didFinishPickingMediaWithInfo 未触发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 ImagePickerController 来抓取个人资料图片.用户有一个按钮.该按钮触发 CamRoll 功能.单击按钮时,会出现正常的 ImagePickerViewController,但不会调用 didFinishPickingMediaWithInfo.在早期版本的 Swift/Xcode 中,调用了相同的代码.这是我的代码.

I use the ImagePickerController, to grab a profile image. The user has a button. The button triggers the CamRoll function. When the button is clicked, the normal ImagePickerViewController appears, but the didFinishPickingMediaWithInfo isn't called. In an earlier version of Swift/Xcode, the same code was called. This is my code.

import UIKit

class AnnonseViewController: UIViewController, UIImagePickerControllerDelegate {

@IBOutlet var Image: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.

}

@IBAction func CamRoll(_ sender: Any) {

    let imagePicker = UIImagePickerController()

    imagePicker.delegate = self

    imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary

    self.present(imagePicker, animated: true, completion: nil)

}

private func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [AnyHashable: Any]) {
    var image = info[UIImagePickerControllerOriginalImage] as! UIImage

    let imageSize = image.size
    let width = imageSize.width
    let height = imageSize.height

    if width != height {
        let newDimensions = min(width,height)
        let widthOffset = (width - newDimensions) / 2
        let heightOffset = (height - newDimensions) / 2

        UIGraphicsBeginImageContextWithOptions(CGSize(width: newDimensions, height: newDimensions), false, 0.0)

        image.draw(at: CGPoint(x: -widthOffset, y: -heightOffset), blendMode: .copy, alpha: 1.0)

        image = UIGraphicsGetImageFromCurrentImageContext()! as UIImage
        UIGraphicsEndImageContext()

    }

    UIGraphicsBeginImageContext(CGSize(width: 150, height: 150))

    _ = UIGraphicsGetCurrentContext()

    image.draw(in: CGRect(x: 0, y: 0, width: 150, height: 150))

    let smallImage = UIGraphicsGetImageFromCurrentImageContext()

    Image.image = smallImage

    picker.dismiss(animated: true, completion: nil)


}

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    picker.dismiss(animated: true, completion: nil)
}

}

为什么不调用代码?

推荐答案

imagePickerController(_:didFinishPickingMediaWithInfo:) 在 Swift 3 中 UIImagePickerControllerDelegate 的正确委托方法为关注.

The correct delegate method of UIImagePickerControllerDelegate in Swift 3 for imagePickerController(_:didFinishPickingMediaWithInfo:) is as follow.

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

}

您可以在 UIImagePickerControllerDelegate 上查看 Apple 文档以了解更多信息详情.

You can check Apple Documentations on UIImagePickerControllerDelegate for more details.

这篇关于Swift ImagePickerController didFinishPickingMediaWithInfo 未触发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆