本文介绍了UIImagePickerControllerOriginalImage 在 ios 11.2.1 中不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在什么情况下我会难过?如果我将 allowEditing
设置为 false.
In what cases will I be sad? if I have set allowEditing
as false.
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let selectedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
// I am happy :)
} else {
// I am sad :(
}
dismiss(animated: true, completion: nil)
}
(我在 iOS 11.2.1 iPhone SE
中崩溃了(根据 Crashlytics
),所以很困惑,如果有可能失败的合法条件,或者只是一个 iOS 错误.)
(I got a crash in iOS 11.2.1 iPhone SE
(as per Crashlytics
), so confused if there are legit conditions where this can fail or it is just an iOS bug.)
推荐答案
我最终使用了这个:
import Photos
extension UIImage {
static func from(info: [String : Any]) -> UIImage? {
if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
return image
}
var imageToBeReturned: UIImage?
if let url = info[UIImagePickerControllerReferenceURL] as? URL,
let asset = PHAsset.fetchAssets(withALAssetURLs: [url], options: nil).firstObject {
let manager = PHImageManager.default()
let option = PHImageRequestOptions()
option.isSynchronous = true
manager.requestImage(for: asset, targetSize: CGSize(width: 1000, height: 1000), contentMode: .aspectFit, options: option, resultHandler: {(image: UIImage?, info: [AnyHashable : Any]?) in
imageToBeReturned = image
})
}
return imageToBeReturned
}
}
这样-
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let selectedImage = UIImage.from(info: info) {
// I am happy :)
} else {
// I am sad :(
}
dismiss(animated: true, completion: nil)
}
这对我有用,请提出任何改进建议:)
This is working for me, please do suggest any improvements :)
这篇关于UIImagePickerControllerOriginalImage 在 ios 11.2.1 中不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!