更新到 iOS 11 后,照片 Assets 现在加载缓慢,我在控制台中收到此消息:
[ImageManager] Unable to load image data, /var/mobile/Media/DCIM/103APPLE/IMG_3064.JPG
我使用静态函数加载图片:
class func getAssetImage(asset: PHAsset, size: CGSize = CGSize.zero) -> UIImage? {
let manager = PHImageManager.default()
let option = PHImageRequestOptions()
option.isSynchronous = true
var assetImage: UIImage!
var scaleSize = size
if size == CGSize.zero {
scaleSize = CGSize(width: asset.pixelWidth, height: asset.pixelHeight)
}
manager.requestImage(for: asset, targetSize: scaleSize, contentMode: .aspectFit, options: option) { (image, nil) in
if let image = image {
assetImage = image
}
}
if assetImage == nil {
manager.requestImageData(for: asset, options: option, resultHandler: { (data, _, orientation, _) in
if let data = data {
if let image = UIImage.init(data: data) {
assetImage = image
}
}
})
}
return assetImage
}
Assets 的请求图像通常总是成功,但它会打印此消息。如果我只使用 requestImageData 函数,则没有这样的消息,但是用 Apple 相机拍摄的照片会失去方向,并且在加载大量图像时会遇到更多问题(我在我的应用程序中使用图像幻灯片)。
Apple 在更新方面总是很糟糕,也许有人知道如何解决这个问题?当用户相机中有大量 Assets 时,它甚至无法加载 Assets 。切换到 requestImageData 对我来说不是一个选择,因为它现在经常带来 nil 数据。
我想指出,我只调用了这个函数一次。它没有在 UITableView 等中使用。我使用其他代码作为全局初始化管理器和选项的拇指,所以 Assets 绝对不是 nil 等。 只有当用户点击某个拇指时,我才调用这个函数。 当图库有大约 5000 张照片时,也许与 Assets 的连接只是过载,后来它无法处理请求和崩溃? 这么多问题。
最佳答案
嘿,我也收到了警告,这对我有用。
替换
CGSize(宽度:asset.pixelWidth,高度:asset.pixelHeight)
经过
PHImageManagerMaximumSize
在 requestImage
调用中
删除了警告日志 🎉
希望对您有所帮助,
关于swift - iOS 11 : [ImageManager] Unable to load image data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46377824/