Jiffy 1.0.1

Jiffy 1.0.1

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布日期最新发布2016年11月
SPM支持 SPM

Mitch Treece 维护。



Jiffy 1.0.1

Jiffy

Swift 动画图像的轻松方式!基于 AImage

概述

Jiffy 使处理动画图像(.gif / .apng)变得轻而易举。虽然有很多库能够实现类似的功能,但大多数都充满了不必要的功能和性能问题。 Jiffy 致力于成为一个小巧且功能简单的动画图像库,具备近乎零的性能开销。

这个库的名字来自于我的同事试图拼读 “Gif” 的荒谬方式。它不是一罐花生酱,它是一个动画图像。

安装

手动

您还可以手动将源文件添加到您的项目中。

  1. 克隆此 git 仓库
  2. Jiffy/ 子目录中的所有 Swift 文件添加到您的项目中
  3. 搞定

Jiffy

在核心上,Jiffy 只不过是一组在 UIImageUIImageView 上的扩展。这使得处理动画图像变得熟悉和简单。

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。我只要求对这个库的任何新增内容都要遵循简单且高效的规范。