PHImageManager 抛出“机会性图像请求的第一阶段返回了一个非表格格式的图像,这不是致命的,但它是意外的”

Pra*_*y C 0 uiimage ios swift photosframework phasset

我正在使用 PHImageCachingManager 来获取 PHAsset 的图像。我需要使用opportunistic模式,以便首先加载可用的低分辨率图像,然后在全分辨率可用时加载它。

出于某种原因,我不断收到以下警告,但我的低分辨率图像无法加载。图像仅在获取最高分辨率时加载(从 iCloud)。

警告:

"First stage of an opportunistic image request returned a non-table format image, this is not fatal, but it is unexpected."
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

    let imageRequestOptions = PHImageRequestOptions()
    imageRequestOptions.isNetworkAccessAllowed = true
    imageRequestOptions.deliveryMode = .opportunistic
    let imageCachingManager = PHCachingImageManager()

    imageCachingManager.requestImage(for: asset , targetSize: PHImageManagerMaximumSize, contentMode: .aspectFill, options: imageRequestOptions) { (image, infoDict) in
        DispatchQueue.main.async {
            if self.myImageView.identifierTag == asset.localIdentifier {
                self.myImageView.image = image
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

El *_*ato 5

imageCachingManager.requestImage(for: asset , targetSize: PHImageManagerMaximumSize, contentMode: .aspectFill, options: imageRequestOptions) { (image, infoDict) in
    DispatchQueue.main.async {
        if self.myImageView.identifierTag == asset.localIdentifier {
            self.myImageView.image = image
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您正在设置可用的最大尺寸作为图像尺寸。改变

targetSize: PHImageManagerMaximumSize
Run Code Online (Sandbox Code Playgroud)

targetSize: CGSize(width: asset.pixelWidth, height: asset.pixelHeight)
Run Code Online (Sandbox Code Playgroud)

或者指定像 CGSize(with: 150, height: 150) 这样的图像大小,除非你想因为内存耗尽而爆炸你的设备。