screenshot

AsyncDrawKit

为 iOS 提供一个异步绘制视图组件,让您的应用程序运行得更快。

用法

Xcode -> File -> Add Packages -> 输入 url -> https://github.com/mcry416/AsyncDrawKit,等待获取基础资源。

直接将根文件夹拖入您的项目。

import AsyncDrawKit

let imageView = AsyncImageView()

// set local image
imageView.image = UIImage(named: "background_image")

// set network image
imageView.sg_setImage("https://www.test.com/test.jpg")

// use the way of downsample to set local image(Bundle image)
imageView.imageNamed = "background_image"

它有哪些特性?

下表是两者之间的比较。

AsyncImageView UIImageView
设置本地图像 支持 支持
设置网络图像 支持 不适用
解码速度 中等
稳定的内存消耗
峰值内存消耗 中等
图像缓存 支持 支持
分辨率 自动适应 / 全分辨率 全分辨率

下表是特性描述。

布局 事件 功能
NodeView 仅 frame 支持 提供一个视图容器
NodeLabel 仅 frame 支持 提供一个视图来显示文本
NodeButton 仅 frame 支持 提供一个容器来响应事件
NodeImageView 仅 frame 支持 提供一个视图来显示图像

您可以手动设置缓存策略,或清除内存中的缓存。

要求

测试

screenshot

比较

属性 性能 说明
AsyncImageView.image evidence 稳定的内存消耗最低
AsyncImageView.imageNamed evidence 稳定的内存消耗低于 UIImageView,但高于 AsyncImageView.image,但这是一种重复图像源的测试。
UIImageView.image evidence 稳定的内存消耗最高。令人惊讶的是,CPU 资源消耗也很高

事实上,真实的业务场景是图像来源丰富且不重复。因此,UIImage 缓存将成为一种负担,但 AsyncImageView.image 将表现良好。

注意

联系

许可证

AsyncDrawKit 在 MIT 许可证下发布。