Swift 动画图像的轻松方式!基于 AImage。
Jiffy 使处理动画图像(.gif / .apng)变得轻而易举。虽然有很多库能够实现类似的功能,但大多数都充满了不必要的功能和性能问题。 Jiffy 致力于成为一个小巧且功能简单的动画图像库,具备近乎零的性能开销。
这个库的名字来自于我的同事试图拼读 “Gif” 的荒谬方式。它不是一罐花生酱,它是一个动画图像。
您还可以手动将源文件添加到您的项目中。
Jiffy/
子目录中的所有 Swift 文件添加到您的项目中在核心上,Jiffy 只不过是一组在 UIImage
和 UIImageView
上的扩展。这使得处理动画图像变得熟悉和简单。
let imageData = ...
let animatedImage = UIImage(animatedImageData: imageData)
let imageView = UIImageView(animatedImage: animatedImage)
imageView.frame = CGRect(x: 0, y: 0, 200, height: 200)
view.addSubview(imageView)
就是这样。现在您已经在视图中拥有了一个循环播放的美丽动画图像!如果您想停止动画图像,只需调用 imageView.stopAnimatedImage()
。当然,调用 imageView.playAnimatedImage()
将重新开始动画。
您还可以让现有的 UIImageView
开始播放动画图像。当您想使用 Storyboards 布局视图时,这很有用。
@IBOutlet weak var imageView: UIImageView!
...
let imageData = ...
let animatedImage = UIImage(animatedImageData: imageData)
imageView.animate(with: animatedImage)
Jiffy 还提供了一个方法来指定图像质量。 AnimatedImageQuality
枚举定义如下
public enum AnimatedImageQuality: Float {
case full = 1.0
case high = 0.8
case medium = 0.5
case low = 0.2
public static func custom(quality: Float) -> AnimatedImageQuality {
return AnimatedImageQuality(rawValue: quality)!
}
}
使用这个枚举,我们可以将一个预定义的质量等级传递给初始化带有动画图像的 UIImageView
let animatedImage = UIImage(animatedImageData: imageData, quality: .high)
如果预定义的质量等级不能满足您的要求,您可以传递一个自定义的质量等级
let animatedImage = UIImage(animatedImageData: imageData, quality: AnimatedImageQuality.custom(quality: 0.42))
如果没有传递质量给 UIImageView
,它将假设的最大(AnimatedImageQuality.full
)质量设置。
您还可以在 UIImageView
上指定一个内存限制(以整个 MB 为单位值)
let imageView = UIImageView(animatedImage: animatedImage, memoryLimit: 5)
如果没有传递内存限制给 UIImageView
,它将默认为 20MB 限制。
我们欢迎提交pull requests。我只要求对这个库的任何新增内容都要遵循简单且高效的规范。