为 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 许可证下发布。