如何使用更新后的 UIImagePickerControllerDelegate iOS 12 API?
How do I use the updated UIImagePickerControllerDelegate iOS 12 API?
我如何使用更新后的 UIImagePickerControllerDelegate
API,因为它已更改为 [UIIMagePickerController.InfoKey : Any]
?这部分已经更新。我也在这里搜索,没有找到答案。
import UIKit
class adicionarNovoItemVc: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet weak var textFieldNome: UITextField!
let imagePicker = UIImagePickerController()
@IBOutlet weak var namePreview: UILabel!
@IBOutlet weak var imagePreview: UIImageView!
let picker = UIImagePickerController()
@IBAction func botaoAdcFoto(_ sender: UIButton) {
picker.allowsEditing = true
picker.delegate = self
present(picker, animated: true)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
dismiss(animated: true)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
???
}
}
更新:
更新 didFinishPickingMediaWithInfo
委托后:
private func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let image = info[.originalImage] as! UIImage? {
self.imagePreview.image = image
self.picker.dismiss(animated: true, completion: nil)
}
}
我现在得到:
Cannot downcast from 'Slice>' to a more optional type 'UIImage?'
其实并没有什么不同。在 iOS 12 中,许多旧常量名称已被重构。
您现在使用 UIImagePickerController.InfoKey.originalImage
:
而不是旧密钥 UIImagePickerControllerOriginalImage
类似于:
let image = info[UIImagePickerControllerOriginalImage]
现在变成:
let image = info[.originalImage]
请参阅 UIImagePickerController.InfoKey 的相关文档。
更新:
您在尝试中犯了几个错误 didFinishPickingMediaWithInfo
。您需要:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let image = info[.originalImage] as? UIImage {
self.imagePreview.image = image
}
self.picker.dismiss(animated: true, completion: nil)
}
您需要使用 UIImagePickerController 的 availableMediaTypes class 函数设置选取器的 mediaTypes 并检索实际图像来自 info 参数。
@IBAction func botaoAdcFoto(_ sender: UIButton) {
picker.allowsEditing = true
picker.delegate = self
picker.sourceType = .photoLibrary
if let mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary) {
picker.mediaTypes = mediaTypes
}
present(picker, animated: true)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let image = info[UIImagePickerControllerOriginalImage] as! UIImage? {
self. imagePreview.setImage(image, for: .normal)
self.picker.dismiss(animated: true, completion: nil)
}
}
我如何使用更新后的 UIImagePickerControllerDelegate
API,因为它已更改为 [UIIMagePickerController.InfoKey : Any]
?这部分已经更新。我也在这里搜索,没有找到答案。
import UIKit
class adicionarNovoItemVc: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet weak var textFieldNome: UITextField!
let imagePicker = UIImagePickerController()
@IBOutlet weak var namePreview: UILabel!
@IBOutlet weak var imagePreview: UIImageView!
let picker = UIImagePickerController()
@IBAction func botaoAdcFoto(_ sender: UIButton) {
picker.allowsEditing = true
picker.delegate = self
present(picker, animated: true)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
dismiss(animated: true)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
???
}
}
更新:
更新 didFinishPickingMediaWithInfo
委托后:
private func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let image = info[.originalImage] as! UIImage? {
self.imagePreview.image = image
self.picker.dismiss(animated: true, completion: nil)
}
}
我现在得到:
Cannot downcast from 'Slice>' to a more optional type 'UIImage?'
其实并没有什么不同。在 iOS 12 中,许多旧常量名称已被重构。
您现在使用 UIImagePickerController.InfoKey.originalImage
:
UIImagePickerControllerOriginalImage
类似于:
let image = info[UIImagePickerControllerOriginalImage]
现在变成:
let image = info[.originalImage]
请参阅 UIImagePickerController.InfoKey 的相关文档。
更新:
您在尝试中犯了几个错误 didFinishPickingMediaWithInfo
。您需要:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let image = info[.originalImage] as? UIImage {
self.imagePreview.image = image
}
self.picker.dismiss(animated: true, completion: nil)
}
您需要使用 UIImagePickerController 的 availableMediaTypes class 函数设置选取器的 mediaTypes 并检索实际图像来自 info 参数。
@IBAction func botaoAdcFoto(_ sender: UIButton) {
picker.allowsEditing = true
picker.delegate = self
picker.sourceType = .photoLibrary
if let mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary) {
picker.mediaTypes = mediaTypes
}
present(picker, animated: true)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let image = info[UIImagePickerControllerOriginalImage] as! UIImage? {
self. imagePreview.setImage(image, for: .normal)
self.picker.dismiss(animated: true, completion: nil)
}
}