为 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 的视图来加载图像。下表是两者之间的比较。
AsyncImageView |
UIImageView |
|
|---|---|---|
| 设置本地图像 | 支持 | 支持 |
| 设置网络图像 | 支持 | 不适用 |
| 解码速度 | 快 | 中等 |
| 稳定的内存消耗 | 低 | 高 |
| 峰值内存消耗 | 高 | 中等 |
| 图像缓存 | 支持 | 支持 |
| 分辨率 | 自动适应 / 全分辨率 | 全分辨率 |
NodeRootView: 提供一个异步绘制容器来加载各种基本视觉组件。下表是特性描述。
| 布局 | 事件 | 功能 | |
|---|---|---|---|
| NodeView | 仅 frame | 支持 | 提供一个视图容器 |
| NodeLabel | 仅 frame | 支持 | 提供一个视图来显示文本 |
| NodeButton | 仅 frame | 支持 | 提供一个容器来响应事件 |
| NodeImageView | 仅 frame | 支持 | 提供一个视图来显示图像 |
您可以手动设置缓存策略,或清除内存中的缓存。
1920 * 1080 的 JPEG 照片,AsyncImageView 在内存消耗方面比 UIImageView 表现更好。比较
属性 |
性能 |
说明 |
|---|---|---|
| AsyncImageView.image | ![]() |
稳定的内存消耗最低 |
| AsyncImageView.imageNamed | ![]() |
稳定的内存消耗低于 UIImageView,但高于 AsyncImageView.image,但这是一种重复图像源的测试。 |
| UIImageView.image | ![]() |
稳定的内存消耗最高。令人惊讶的是,CPU 资源消耗也很高 |
事实上,真实的业务场景是图像来源丰富且不重复。因此,UIImage 缓存将成为一种负担,但 AsyncImageView.image 将表现良好。
UIImageView 表现良好。ObjcMembers 来使用它,这没有任何问题。AsyncImageView 的可重用策略存在一些问题AsyncDrawKit 在 MIT 许可证下发布。