SDWebImageLottiePlugin 1.0.0

SDWebImageLottiePlugin 1.0.0

DreamPiggy 维护。



 
依赖项
SDWebImage~> 5.10
lottie-ios~> 3.4
 

  • DreamPiggy

SDWebImageLottiePlugin

CI Status Version License Platform Carthage compatible codecov

它是为什么

SDWebImageLottiePlugin 是 SDWebImage 框架的插件,它可以从 JSON 文件中加载 Lottie 动画。

您可以在他们的 官方网站 上找到更多关于 Lottie 的资源。

要求

  • iOS 11+
  • macOS 10.11+
  • tvOS 11+
  • Xcode 11+

安装

Swift 包管理器

SDWebImageWebPCoder 可通过 Swift 包管理器 获得。

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

Cocoapods

SDWebImageLottiePlugin 可通过 Cocoapods 获得。要安装它,只需将以下行添加到您的 Podfile 中

pod 'SDWebImageLottiePlugin', '~> 1.0'

Carthage(已弃用)

SDWebImageLottiePlugin 可通过 Carthage 获得。

github "SDWebImage/SDWebImageLottiePlugin", ~> 1.0

注意

  1. 由于模块名称为 Lottie_macOS 而不是 Lottie,Carthage macOS 集成存在问题,请在以下链接等待问题修复:此处👀

Lottie 2 与 Objective-C

Lottie 3.4 版本的新的 Lottie.RenderingEngine = .coreAnimation 解决了以下问题 此处🚀

因此,从 SDWebImageLottiePlugin v1.0.0 版本开始,我们不支持 Lottie 2 以及 Objective-C,因为 Lottie 3 使用纯 Swift。因此,我们也不再支持 iOS 9-10 版本,因为上游依赖项需要 iOS 11及更高版本。

对于仍在使用 Lottie 2 和 Objective-C 的用户,请检查 0.x 版本更新到 0.3.0

使用方法

从远程JSON加载Lottie动画

  • Swift
let animationView: Lottie.AnimationView
let lottieJSONURL: URL
animationView.sd_setImage(with: lottieJSONURL)

注意

  • 您也可以在AnimatedControl上加载Lottie JSON文件,例如开关按钮。
  • Lottie动画不会自动播放,您可以使用完成块或UITableView/UICollectionView的显示计时来播放。
animationView.sd_setImage(with: lottieUrl, completed: { _,_,_,_ in
    self.animationView.play(fromProgress: 0, toProgress: 1, loopMode: .repeat(5)) { finished in
        // ...
    }
}
  • 如果您的Lottie JSON文件中包含对App包内图像的引用,只需在Lottie动画开始前设置imageProvider即可。
let bundle = Bundle(for: MyBundleClass.self)
animationView.imageProvider = BundleImageProvider(bundle: bundle, searchPath: nil)
animationView.sd_setImage(with: lottieUrl)

高级使用

此Lottie插件使用包装类LottieImage,因为SDWebImage的定制化架构设计。通常您无需关心这一点,但这可以允许一些高级使用。

  • Swift
let animation = try? JSONDecoder().decode(Animation.self, from: data)
let animatedImage = LottieImage(animation: animation)
// Optional, custom image bundle
LottieImage.imageProvider = BundleImageProvider(bundle: bundle, searchPath: nil)
// Snapshot Lottie animation frame
UIImage *posterFrame = animatedImage.animatedImageFrame(at: 0)
TimeInterval duration = animatedImage.animatedImageDuration(at: 0)

注意

  • 快照是位图版本,用于特殊场合,如缩略海报。最好不要在SDAnimatedImageView上播放。因为Lottie是矢量动画,而Lottie.AnimationView使用Core Animation进行渲染,这更快。

演示

如果您在使用过程中有任何问题,SDWebImageLottiePlugin为iOS和macOS平台提供了一个演示。要运行演示,请克隆该仓库并运行以下命令。

cd Example/
pod install
open SDWebImageLottiePlugin.xcworkspace

在打开Xcode项目后,点击运行以构建和运行演示。

截图

  • iOS演示

  • macOS演示

lottie json文件来自lottie-web示例

作者

DreamPiggy

许可证

SDWebImageLottiePlugin遵循MIT许可证。有关更多信息,请参阅LICENSE文件。