更多技术整理,欢迎关注本人博客 www.tomtwos.com

在本文中,我将向你展示如何通过CoacoaPods和Swift Package Manager两种方法从Github获取Lottie工程包,并将Lottie动画添加到SwiftUI APP。

0 准备工作

关于Lottie、CocoaPods、SPM,此处不多做介绍,需要了解相关概念及使用方法

  • lottie官网

Lottie Docs

  • lottie-ios项目 github地址

airbnb/lottie-ios

  • LottieFiles:一个下载JSON格式动画的网站

LottieFiles - Free animation files built for Lottie

1 Xcode新建SwiftUI项目

有手就行的操作,此处不做介绍

2 通过CocoaPods安装Lottie(二选一)

  1. 打开终端进入项目目录,运行 $ pod init 生成一个Podfile
  2. 打开Podfile,向Podfile添加 pod 'lottie-ios' ,然后打开终端进入项目目录,运行 pod install ,安装成功后直接使用 import Lottie 使用Lottie

2 通过SPM安装Lottie(二选一)

Github官方源: https://github.com/airbnb/lottie-ios.git

若国内访问不了,使用我的码云源: https://gitee.com/gaozichen2012/lottie-ios.git

第一步:File→Swift Packages→Add

第二步:添加第三方库的链接

第三步:设置项目的Dead Code Stripping

在项目中的 Build Settings 中的 Dead Code Stripping 修改为 NO ,然后直接使用 import Lottie 使用Lottie

(此步骤在 https://github.com/airbnb/lottie-ios 的项目介绍中有说明,是为了规避一个BUG)

3 添加一个JSON格式的Lottie动画

向工程添加 love.json 文件,我这里使用的 "love.json" 是从阿里犸良生成的一个JSON动画

(JSON动画可在 阿里-犸良动画设计平台 生成下载,或者在 LottieFiles 直接下载JSON动画)

4 添加文件LottieView.swift

LottieView.swift import Lottie

//  LottieView.swift
import SwiftUI
import Lottie
struct LottieView: UIViewRepresentable {
    func makeCoordinator() -> Coordinator {
        Coordinator(self)
    var name: String!
    @Binding var play:Int
    var animationView = AnimationView()
    class Coordinator: NSObject {
        var parent: LottieView
        init(_ animationView: LottieView) {
            self.parent = animationView
            super.init()
    func makeUIView(context: UIViewRepresentableContext<LottieView>) -> UIView {
        let view = UIView()
        animationView.animation = Animation.named(name)
        animationView.contentMode = .scaleAspectFit
        animationView.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(animationView)
        NSLayoutConstraint.activate([
            animationView.widthAnchor.constraint(equalTo: view.widthAnchor),
            animationView.heightAnchor.constraint(equalTo: view.heightAnchor)
        return view
    func updateUIView(_ uiView: UIView, context: UIViewRepresentableContext<LottieView>) {
        animationView.play()

5 修改文件ContentView.swift

修改ContentView.swift ,调用LottieView并传入"love.json"动画

//ContentView.swift
import SwiftUI
struct ContentView: View {
    @State var play = 0
    var body: some View {
        VStack{
            //向LottieView函数传入"love.json"动画
            LottieView(name: "love", play: $play)
                .frame(width:100, height:100)
            Button("Play"){ self.play += 1 }
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()

编译后预览,点击play即可播放动画

完整项目代码见Github:gaozichen2012/lottie-ios-test

目录前言0 准备工作1 Xcode新建SwiftUI项目2 通过CocoaPods安装Lottie(二选一)2 通过SPM安装Lottie(二选一)第一步:File→Swift Packages→Add第二步:添加第三方库的链接第三步:设置项目的Dead Code Stripping3 添加一个JSON格式的Lottie动画4 添加文件LottieView.swift5 修改文件ContentView.swift6 测试前言更多技术整理,欢迎关注本人博客www.tomtwos.com在本文中,我将向你
适用于iOS,macOS(以及和 )的Lottie 在查看文档,常见问题解答,帮助,示例等 Lottie是适用于Android和iOS的移动库,它以最少的代码实时本地渲染基于矢量的动画和艺术作品。 Lottie加载并渲染以bodymovin JSON格式导出的动画和矢量。 Bodymovin JSON可以通过使用After Effects,使用进行以及从创建和导出。 第一次,设计人员可以创建和发布精美的动画,而无需工程师费心地手工制作。 由于动画由JSON支持,因此它们的尺寸非常小,但是复杂性却很大! 可以播放,调整大小,循环播放,加快,放慢,倒转甚至是交互式地擦洗动画Lottie也可以播放或循环播放一部分动画,可能性无穷无尽! 甚至可以在运行时以各种方式更改动画! 更改颜色,位置或任何关键的值! Lottie还支持开箱即用的本机UIViewController转换! 这只是洛蒂力量的一小部分 Lottie支持和 (动态和静态)。 Lottie用Swift 4.2编写。 Github回购 您可以拉出存储库,并包含Lottie.xcodeproj来构建动态或静态库。
如何在软件开发的道路上更进一步? 我们可能已经在研发的这条道路上持续了5年,甚至更久的时间,如何才能拉开和大众的距离,让自己的工作能力提升一步?架构设计应该是其中一个方向,大到app整个的设计,小到每一个页面、功能,都需要设计。这篇文章根据我的研发经验谈一谈App的架构设计。 一、代码需要可读性 可读性是十分必要的,我们甚至可以在一个UIViewController中完成一个APP的所有功能,它可能有几万行,几十万行代码,该怎么维护,怎么读,写的时候只有你和天明白是怎么回事,过了几天就只有天知道代码为什么
命运之轮命运之轮:ferris_wheel:(使用SwiftUI构建的cocoapods库)支持动态内容。 Sameer Nawaz的《:red_heart:Love Made Made in Love:red_heart:》-命运之轮命运之轮:ferris_wheel:是使用SwiftUI构建的cocoapods库,支持动态内容。 Sameer Nawaz的Made with love:red_heart:Preview-Spin WheelWheelExample要运行示例项目,请克隆存储库,然后首先从Example目录运行pod install。 安装FortuneWheel可通过CocoaPods获得。 要安装它,只需在您的Podfile中添加以下行:pod'FortuneWheel'在您的类中导入Fortune Wheel导入FortuneWheel示例代码 SwiftUI最好的下拉刷新组件推进 《SwiftUI 下拉菜单支持List版和ScrollView版 (教程含源码) UIScrollView UIRefreshControl 》 基础文章推荐 《SwiftUI是什么,听听大牛们如何说》 经典教程推荐 更新近百篇SwiftUI教程SwiftUI2020教程》 帮您突破数据存储难关《SwiftUI vs CoreData数据存储解决方案》 《WWDC2020专栏》 《SwiftUI WWDC2020 新增组件列
什么是Lottie Lottie是一种小型,高质量,交互式的开源动画文件格式,可以在运行时进行操作。App Store上排名前500的应用程序现在都使用Lottie吸引用户并提高转化率。 Lottie的目标是尽可能支持尽可能多的After Effects功能,以提供比简单图标动画更多的功能。我们创建了一些其他示例,以展示库的灵活性,丰富性和深层的功能集。在示例应用程序中
图片来源:developer.apple.comSwiftUI 更好的应用,更少的代码。 SwiftUI是一种创新、简单的iOS开发中的界面布局方案,可以通过Swift语言的强大功能,在所有的Apple平台上快速构建用户界面。 仅使用一组工具和API为任何Apple设备构建用户界面。 SwiftUI具... 看完本文您将掌握的技能 创建页面视图: 要创建页面视图,我们将TabView与PageTabViewStyle一起使用。我们将跟踪可见选项卡到变量,以便我们可以将页面操作同步到可滚动选项卡,反之亦然。 struct PageView: View { @Binding var selection: Int let dataModel: [String] var b
第三章: 用Swift语言和SwiftUI框架创建你的第一个app ​ 到目前为止, 你应该对xcode工具和swift语言有所了解,如果你没看过前面2节, 建议先看看,这章,会深入了解一下SwiftUI 框架特性 1. 构建第一个app File->New->Project选择iOS–>App 下一步, 工程名,命名为 HelloWorld 其中organization identifier可以填写比较个性的定义,或者如果有你网站,可以填写网站域名,然后点Next, xcode会提示
关于 Swift Swift使我们在编写ios软件时要用到的编程语言,在苹果发布 Swift语言之前,开发ios软件使用Objective-C语言,但这门语言比较晦涩难懂。不少刚开始接触ios开发的小伙伴都会觉得Objective-C在代码编写以及阅读上非常不方便。 Swift 被大家公认为是一款非常优雅的语言! 关于 SwiftUI SwiftUI 使在所有 Apple 上构建用户界面
Lottie 除了Lottie和我们刚刚做的图像序列方法,我们还可以使用GIF,视频,甚至可以使用贝塞尔路径或者UIView动画功能的组合来实现。但是Lottie是相对来说比较好的方式,将Lottie和其他方式对比。 PNG序列图像 PNG序列图形的最大缺点之一是它们的尺寸相当大,这使得它们在不同的界面上导出和操作有些麻烦。 相比之下,Lottie文件非常小,大小也很方便,因此下载速度很快,并尽可能保持网站或应用程序运行的流畅。 GIF格式 虽然比PNG图形小,但gif仍然是一种非常占用空间的格式,平均尺寸