SDWebImageLottieCoder 0.2.0

SDWebImageLottieCoder 0.2.0

DreamPiggy 维护。



 
依赖项
SDWebImage~> 5.10
librlottie~> 0.2
 

  • DreamPiggy

SDWebImageLottieCoder

CI Status Version License Platform SwiftPM compatible Carthage compatible

用途

这是一个用于 Lottie 动画格式 的 coder 插件。

差异

我们已经构建了一个名为 SDWebImageLottiePlugin 的 Lottie 插件。

这两个组件的主要区别在于我们的 播放动画的方式使用的依赖项。为了减少不必要的依赖项代码大小,我们将它们分为两个不同的仓库。

SDWebImageLottiePlugin

这个 Lottie 框架依赖于 Airbnb 维护的 lottie-ios

这个插件只能通过他们自己的 LOTAnimationView 来播放动画。

  • 优点:它使用向量渲染技术,例如Core Animation Layer,这意味着您可以动态更改视图大小而不会丢失细节或重新生成图像。

  • 缺点:向量渲染比位图渲染慢得多。对于小型和大批量洛蒂图像,如表情符号和小图标,这不适用。

SDWebImageLottieCoder

此洛蒂框架依赖于由三星维护的rlottie

此插件可以在SDAnimatedImageViewUIImageView/NSImageView上播放动画。

  • 优点:它使用位图渲染,每个动画帧都渲染成光栅化位图,而不是矢量图像。您还可以将所有帧预加载到内存中,以获得最佳性能和60FPS。这也很容易集成到UIKit/AppKit原生框架中。

  • 缺点:位图渲染不支持动态尺寸更改。一旦您需要更大图像,就必须重新解码源洛蒂JSON,这既耗时又消耗RAM。

示例

要运行示例项目,请克隆仓库,然后从Example目录运行pod install

要求

  • iOS 9+
  • macOS 10.11+
  • tvOS 9.0+
  • watchOS 2.0+
  • Xcode 11+

安装

CocoaPods

SDWebImageLottieCoder可通过CocoaPods使用。要安装它,只需将以下行添加到Podfile中即可:

pod 'SDWebImageLottieCoder'

Carthage

SDWebImageLottieCoder 可以通过 Carthage 获取。

github "SDWebImage/SDWebImageLottieCoder"

Swift 包管理器 (Xcode 11 及以上版本)

SDWebImageLottieCoder 可以通过 Swift 包管理器 获取。

let package = Package(
    dependencies: [
        .package(url: "https://github.com/SDWebImage/SDWebImageLottieCoder.git", from: "0.1")
    ]
)

SDWebImageLottieCoder可通过CocoaPods使用。要安装它,只需将以下行添加到Podfile中即可:

pod 'SDWebImageLottieCoder'

用法

添加编码器

在使用 SDWebImage 加载 Lottie json 之前,您需要将 Lottie Coder 注册到您的编码器管理器中。建议在您的应用启动后(例如 AppDelegate 方法)执行此操作。

  • Objective-C
// Add coder
SDImageLottieCoder *lottieCoder = [SDImageLottieCoder sharedCoder];
[[SDImageCodersManager sharedManager] addCoder:lottieCoder];
  • Swift
// Add coder
let lottieCoder = SDImageLottieCoder.shared
SDImageCodersManager.shared.addCoder(lottieCoder)

加载

  • Objective-C
// Lottie json loading
NSURL *lottieURL;
UIImageView *imageView;
[imageView sd_setImageWithURL:lottieURL];
  • Swift
// Lottie json loading
let lottieURL: URL
let imageView: UIImageView
imageView.sd_setImage(with: lottieURL)

动画和大小

  • Objective-C
// Lottie json loading on animated image view
NSURL *lottieURL;
SDAnimatedImageView *imageView;
CGSize pixelSize = CGSizeMake(300, 300);
[imageView sd_setImageWithURL:lottieURL placeholderImage:nil options:0 context:@{SDWebImageThumbnailPixelSize:@(pixelSize)}];
  • Swift
// Lottie json loading on animated image view
let lottieURL: URL
let imageView: SDAnimatedImageView
let pixelSize = CGSize(width: 300, height: 300)
imageView.sd_setImage(with: lottieURL, placeholderImage: nil, options: [], contrext: [.thumbnailPixelSize : pixelSize])

解码

您还可以将Lottie图像解码成动态的UIImage/NSImage。如果Lottie图像有引用的外部图像资源,您也可以指定。

  • Objective-C
// Lottie image decoding
NSData *lottieJSONData;
NSBundle *imageBundle; // You can even download the external image from online to local path, then load the lottie animation
UIImage *image = [[SDImageLottieCoder sharedCoder] decodedImageWithData:lottieJSONData options:@{SDImageCoderDecodeLottieResourcePath : imageBundle.resourcePath}];
  • Swift
// Lottie image decoding
let lottieJSONData: Data
let imageBundle: Bundle // You can even download the external image from online to local path, then load the lottie animation
let image = SDImageWebPCoder.shared.decodedImage(with: lottieJSONData, options: [.lottieResourcePath : imageBundle.resourcePath])

截图

这些Lottie动画贴纸来自lottiefiles-telegram

作者

DreamPiggy, [email protected]

许可

SDWebImageLottieCoder遵循MIT许可。更多信息请参阅LICENSE文件。

感谢