一个使用 Swift 开发的 iOS 动画 GIF 引擎,具有低内存和 CPU 使用率。
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)
带有内存限制的初始类 'JWAnimationManager'。JWAnimationManager 将管理其中的所有 GIF 图像视图。
当将新的 GIF 图像视图添加到 'JWAnimationManager' 中时,它会估算新 GIF 的内存使用量,并将其作为新的评估值添加到 'totalGifSize' 中。当新的评估值超过内存限制时,JWAnimationManager 将所有 GIF 图像视图更改为无缓存模式。
如果函数 'isDisplayedInScreen' 返回 false,则视图将被挂起。如果函数 'isDiscarded' 返回 false,则视图将从 'JWAnimationManager' 中删除。
CPU 使用率[平均] | 内存使用率[平均]/MB | |
---|---|---|
JWAnimatedImage | 6% ~ 14% [8%] | 7.5 ~ 8.4 [8.2] |
FLAnimatedImage | 8% ~ 24% [11%] | 7.3 ~ ??? [???] |
CPU 使用率[平均] | 内存使用率[平均]/MB | |
---|---|---|
JWAnimatedImage | 31% ~ 44% [38%] | 12.4 ~ 13.4 [12.9] |
FLAnimatedImage | 36% ~ 62% [54%] | 11.0 ~ 12.4 [11.3] |
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。