JWAnimatedImage 0.2.1

JWAnimatedImage 0.2.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2016 年 4 月
SPM支持 SPM

Jiawei Wang 维护。



  • 作者
  • Jiawei Wang

一个使用 Swift 开发的 iOS 动画 GIF 引擎,具有低内存和 CPU 使用率。

video

功能

  • [x] 使用异步图像解码来减少主线程的 CPU 使用率。[新增]
  • [x] 优化多图像情况。
  • [x] 以 UIImage 和 UIImageView 扩展的方式,易于使用。
  • [x] 通过使用生产者/消费者模式使用户在内存使用方面有很好的性能。
  • [x] 通过使用异步加载方式在 CPU 使用方面有很好的性能。
  • [x] 通过使用因子“数据完整性级别”来控制显示质量。
  • [x] 通过使用因子“内存限制”来控制内存使用。

安装

使用方法

let url = NSBundle.mainBundle().URLForResource(“imagename”, withExtension: "gif")!
let imageData = NSData(contentsOfURL:url)
let image = UIImage()
image.AddGifFromData(imageData!)
let gifmanager = JWAnimationManager(memoryLimit:20)
let imageview = UIImageView()
imageview.AddGifImage(image,manager:gifmanager)
imageview.frame = CGRect(x: 0.0, y: 5.0, width: 400.0, height: 200.0)
view.addSubview(imageview)

架构

Architecture

UIImageView 状态

LifeCycle

JWAnimationManager

带有内存限制的初始类 'JWAnimationManager'。JWAnimationManager 将管理其中的所有 GIF 图像视图。

检查缓存

当将新的 GIF 图像视图添加到 'JWAnimationManager' 中时,它会估算新 GIF 的内存使用量,并将其作为新的评估值添加到 'totalGifSize' 中。当新的评估值超过内存限制时,JWAnimationManager 将所有 GIF 图像视图更改为无缓存模式。

视图的生命周期

如果函数 'isDisplayedInScreen' 返回 false,则视图将被挂起。如果函数 'isDiscarded' 返回 false,则视图将从 'JWAnimationManager' 中删除。

基准测试:与 FLAnimatedImage 比较

1. 显示 1 张图片

CPU 使用率[平均] 内存使用率[平均]/MB
JWAnimatedImage 6% ~ 14% [8%] 7.5 ~ 8.4 [8.2]
FLAnimatedImage 8% ~ 24% [11%] 7.3 ~ ??? [???]

2. 显示 3 张图片

CPU 使用率[平均] 内存使用率[平均]/MB
JWAnimatedImage 31% ~ 44% [38%] 12.4 ~ 13.4 [12.9]
FLAnimatedImage 36% ~ 62% [54%] 11.0 ~ 12.4 [11.3]

3.显示30张图片

CPU 使用率[平均] 内存使用率[平均]/MB
JWAnimatedImage 38% ~ 81% [53%] 59.3 ~ 82.4 [63.3]
FLAnimatedImage 126% ~ 185% [143%] 58.4 ~ 98.9 [74.2]

注意

1.测量因素

  • 最后更新:2016年3月26日

  • 测量设备:iOS 9.3的iPhone6

  • 测量工具:Xcode 7.3中的配置文件

  • 测量图像:请查看仓库中的内容,所有参数都是默认值。

  • 原始数据在这里

2.我与@mitchellporter讨论了FLAnimatedImage的内存使用量很高,并确认这个问题确实是存在的,如这里所述。

许可

JWAnimatedImage采用MIT许可发布。有关详细信息,请参阅LICENSE