1、使用 yy_setImage 方法在 transform 这个 block 中会发现获取到的图片 的 size 和原图不一致,原图尺寸 1920 * 1080,但实际获取到的却是 640 * 360(测试机器是 iPhone 8 Plus),感觉缩小到原来的 1/3。其实图片的 scale 取得是 UIScreen 的 scale,但原有的像素值是不会变的。
print("\(image.size.width) * \(image.size.height)") // 640.0 * 360.0
print("UIScreen.main.scale = \(UIScreen.main.scale)") // 3.0(iPhone 8 Plus)
print("\(image.cgImage!.width) * \(image.cgImage!.height)") // 1920 * 1080
查看这个 Issue
2、图片 URL 中带有中文导致 yy_setImage 方法不执行。遇到这种情况可以先对 URL 字符串进行编码:
let encodeUrl = imageUrl.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)
查看这个 Issue
3、一些图片在 progress 这个 block 中获取到的 expectedSize = -1。例如这个链接: http://pic1.win4000.com/wallpaper/6/5243c949aadb6.jpg,不知如何解决,Issues 上也没找到相关的问题。
4、在 transform 的 block 中可以对图片进行后处理,例如我改变图片大小和添加圆角,此时缓存的是已经修改过后的图。但假若我在另外一个地方也需要用到这张图片的原图,但 key(url)已经和修改图片对应,没办法再下载原图了。这个是蛮头疼的问题。
5、清除图片缓存锁死的问题我也遇到了,请查看这个 Issue。作者好像还没解决这个 bug,我用了他提到的临时解决办法:
var cache: YYImageCache? = YYWebImageManager.shared().cache
print(cache?.memoryCache.totalCost)
print(cache?.memoryCache.totalCount)
print(cache?.diskCache.totalCost())
print(cache?.diskCache.totalCount())
cache?.memoryCache.removeAllObjects()
cache?.diskCache.removeAllObjects(progressBlock: { (removedCount, totalCount) in
print("removedCount = \(removedCount), totalCount = \(totalCount)")
}, end: { (error) in
DispatchQueue.global(qos: .default).async {
cache = YYWebImageManager.shared().cache
print(cache?.memoryCache.totalCost)
print(cache?.memoryCache.totalCount)
print(cache?.diskCache.totalCost())
print(cache?.diskCache.totalCount())
}
})
6、测试发现,Swift4.0 下使用 YYWebImageOptionProgressiveBlur 没有模糊渐进式下载效果,YYWebImageOptionSetImageWithFadeAnimation 倒是有效果的。然后在 Issue 上看了有位网友的文章,说必须要是 Progressive JPEG 格式的图片才会显示渐进下载的效果,而不是代码的问题。但我也尝试了,无奈还是不行。
7、大家反映比较多的根据 URL 获取图片出错的问题我还没测试到。
https://github.com/ibireme/YYWebImage/issues/133
https://github.com/ibireme/YYWebImage/issues/91