PHImageManager.requestImageForAsset 对于 HighQualityFormat 从不调用 resultHandler

PHImageManager.requestImageForAsset for HighQualityFormat never calls resultHandler

我有一个显示照片库图像列表的 Collection 视图,在选择时,我想获取最高质量的版本并显示一个控制器来裁剪它。

我的 Collection View 的调用工作正常:.

let options = PHImageRequestOptions()
options.networkAccessAllowed = true

PHImageManager.defaultManager().requestImageForAsset(asset, targetSize: CGSize(width: 480, height: 640), contentMode:.AspectFit, options:options, resultHandler:{(image, info)in

    print("PhotosVC RECEIVED image size \(image!.size.width) x \(image!.size.height)")

    cell.ImageView?.contentMode = UIViewContentMode.ScaleAspectFit
    cell.ImageView?.image = image
})

resultHandler 被调用一次或多次 - 通常是两次,第一次返回 60x45,然后再次返回 480x360。

选择单元格后,另一个 ViewController 使用 HighQualityFormat 选项调用 requestImageForAsset:

let options = PHImageRequestOptions()
options.networkAccessAllowed = true
options.deliveryMode = PHImageRequestOptionsDeliveryMode.HighQualityFormat

let ret = PHImageManager.defaultManager().requestImageForAsset(asset, targetSize: CGSize(width: 768, height: 1024), contentMode:.AspectFit, options:options, resultHandler:{(image, info)in

    print("RootVC RECEIVED image size \(image!.size.width) x \(image!.size.height)")
    // stuff here - never called
})

当我在我的设备(iPad Mini Retina,iOS 9.3.2)上 运行 这段代码时,从未调用 resultHandler。 它确实在模拟器上被调用,100% 的时间。似乎是 device-only 错误,或特定照片的错误(在设备上 100% 可重现)

我在这个调用上尝试了很多不同的变体;如果我删除 deliveryMode = HighQualityFormat 约束,resultHandler 将以较低的分辨率多次成功调用。

欢迎任何想法或见解。

问题是我的测试设备状态不佳。

主要症状是使用 Apple 应用拍摄的新照片和屏幕截图没有出现在相机胶卷或照片应用的任何位置。

设备上的硬重置(主页+锁定 15 秒)解决了上述症状,现在以预期的方式为 HighQualityFormat 调用了 resultHandler。