即使 allowsEditing 为真,editingInfo 中也没有 UIImagePickerControllerEditedImage

There is no UIImagePickerControllerEditedImage in editingInfo even when allowsEditing is true

我正在尝试从 UIImagePickerController 获取编辑后的图像,但 editingInfo 字典中没有 UIImagePickerControllerEditedImage 键。怎么了?

let pickerController = UIImagePickerController()
pickerController.delegate = self
pickerController.allowsEditing = true
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary) {
    pickerController.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
    self.presentViewController(pickerController, animated: true, completion: nil)
}

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
    println(editingInfo)
    if let editedImage = editingInfo[UIImagePickerControllerEditedImage] as? UIImage {

    }
}

editingInfo 输出

[UIImagePickerControllerOriginalImage: <UIImage: 0x7f8f15a1f0e0> size {1500, 1001} orientation 0 scale 1.000000, UIImagePickerControllerCropRect: NSRect: {{994, 514}, {501, 487}}, UIImagePickerControllerReferenceURL: assets-library://asset/asset.JPG?id=900A4F75-A88F-4332-AAC8-2BD3A2B1514A&ext=JPG]

您正在使用 func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!),它已被弃用。

改用func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject])

希望这有效:

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
    self.imageView.image = info[UIImagePickerControllerEditedImage] as? UIImage
    self.dismissViewControllerAnimated(true, completion: nil)

}