当图像大于图像视图时,iOS 需要操作大UIImage
对象,这会导致 UI 出现明显的卡顿。如果您适当地调整图像大小(在后台线程中),它可以解决这个问题。
幸运的是,Kingfisher 有一个处理器可以为您做到这一点。正如备忘单所说:
用于高分辨率DownsamplingImageProcessor
图像
想想我们想在表格视图或集合视图中显示一些大图像的情况。在理想的世界中,我们希望为它们获得更小的缩略图,以减少下载时间和内存使用。但在现实世界中,也许您的服务器并没有为您准备这样的缩略图版本。新增DownsamplingImageProcessor
救援。在加载到内存之前,它将高分辨率图像下采样到一定大小:
imageView.kf.setImage(
with: resource,
placeholder: placeholderImage,
options: [
.processor(DownsamplingImageProcessor(size: imageView.size)),
.scaleFactor(UIScreen.main.scale),
.cacheOriginalImage
])
通常,DownsamplingImageProcessor
与.scaleFactor
和一起使用.cacheOriginalImage
。它为您的 UI 提供了合理的图像像素比例,并通过缓存原始高分辨率图像来防止将来下载。
我用小图像创建了一个小测试,并确认它是丝般光滑的,但是当我使用大图像时,我在滚动行为中遇到了卡顿。但是当我DownsamplingImageProcessor
在大图像场景中添加它时,它又变得如丝般顺滑了。