FLAnimatedImage ·
FLAnimatedImage 是一个高性能的 iOS 动画 GIF 引擎
- 以与桌面浏览器相当的播放速度同时播放多个 GIF
- 尊重可变帧延迟
- 在内存压力下表现出色
- 消除第一次播放循环中的延迟或阻塞
- 以与现代浏览器相同的方式解释快速 GIF 的帧延迟
它是一个经过良好测试的 组件,为 Flipboard 上的所有 GIF 提供动力。为了了解其行为,它附带一个交互式演示
它是为谁准备的?
- 尚未支持动画 GIF 的应用程序
- 已经支持动画 GIF 但希望获得更高性能解决方案的应用程序
- 想研究代码的人(相关的博客文章 是一个好的起点;也可以查看下面的 待办事项 部分)
安装与使用
FLAnimatedImage 是一个封装良好的组件。只需将您现有的 UIImageView
实例替换为 FLAnimatedImageView
实例,即可获得动画 GIF 支持。无需管理任何中央缓存或状态。
如果您使用 CocoaPods,最快捷的方法是在命令行中输入以下命令
$ pod try FLAnimatedImage
要将它添加到您的应用程序中,将两个类 FLAnimatedImage.h/.m
和 FLAnimatedImageView.h/.m
复制到您的 Xcode 项目中,或者通过添加以下内容到您的 Podfile 通过 CocoaPods
pod 'FLAnimatedImage', '~> 1.0'
如果您使用 Carthage,将以下行添加到您的 Cartfile
github "Flipboard/FLAnimatedImage"
如果您使用 Swift Package Manager,将以下内容添加到您的 Package.swift
或通过 XCode 添加
dependencies: [
.package(url: "https://github.com/Flipboard/FLAnimatedImage.git", .upToNextMajor(from: "1.0.16"))
],
targets: [
.target(name: "TestProject", dependencies: ["FLAnimatedImage""])
]
在您的代码中,#import "FLAnimatedImage.h"
,从一个动画 GIF 创建一个图片,并设置图像视图以显示它
FLAnimatedImage *image = [FLAnimatedImage animatedImageWithGIFData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://upload.wikimedia.org/wikipedia/commons/2/2c/Rotating_earth_%28large%29.gif"]]];
FLAnimatedImageView *imageView = [[FLAnimatedImageView alloc] init];
imageView.animatedImage = image;
imageView.frame = CGRectMake(0.0, 0.0, 100.0, 100.0);
[self.view addSubview:imageView];
它灵活地集成到您的自定义图像加载堆栈中,并与 iOS 9 兼容。
它使用 ARC 和苹果框架 QuartzCore
,ImageIO
,MobileCoreServices
和 CoreGraphics
。
它能够进行精细粒度的日志记录。可以使用 +setLogBlock:logLevel:
方法设置一个块在 FLAnimatedImage
上调用,通过各种日志级别记录各种日志。例如
// Set up FLAnimatedImage logging.
[FLAnimatedImage setLogBlock:^(NSString *logString, FLLogLevel logLevel) {
// Using NSLog
NSLog(@"%@", logString);
// ...or CocoaLumberjackLogger only logging warnings and errors
if (logLevel == FLLogLevelError) {
DDLogError(@"%@", logString);
} else if (logLevel == FLLogLevelWarn) {
DDLogWarn(@"%@", logString);
}
} logLevel:FLLogLevelWarn];
由于 FLAnimatedImage 授权基于 MIT 协议,因此它符合在 App Store 上的任何应用程序中使用它的条款。
发布流程
- 在
FLAnimatedImage.podspec
中增加版本号,更新 CHANGES 并提交。 - 使用
> git tag -a <VERSION> -m "<VERSION>"
标记提交,并使用> git push --tags
推送。 - 使用以下命令将 Podspec 提交到 trunk Submit Podspec to Trunk with
> pod trunk push FLAnimatedImage.podspec
(确保您已进行身份验证 确保您已进行身份验证)。
待办事项
- 支持其他动画图像格式,例如 APNG 或 WebP (WebP 支持已在此处实现 here)
- 集成到网络库和图像缓存中
- 调查
FLAnimatedImage
是否应成为UIImage
的子类 - 更智能的缓冲
- 将示例应用程序带到 iPhone 上
此代码已经作为是的方式成功交付给许多人,但请务必提出您的问题、问题和拉取请求!
使用 FLAnimatedImage 选择应用程序
(按字母顺序)
- 特写镜头
- 设计图片
- Dropbox
- Dumpert
- Ello
- getGIF
- Gifalicious
- HashPhotos
- LiveBooth
- lWlVl 音乐节
- Medium
- Slack
- Telegram
- 邮编查找器
如果您在应用程序中使用了 FLAnimatedImage,请提交一个 PR 添加到这个列表!