带Lottie的iOS动画

几个月前,当我在团队中使用一项新功能时,我们被要求为iOS App添加某种动画,以区别于其他动画,尤其需要“神奇”的东西。

在github上进行了快速研究之后,我们发现了一个“神奇的”框架,可以实现我们的目标,该框架是Lottie。

Lottie是由Airbnb开发人员针对Android和iOS创建的一个库,用于解析使用bodymovin以JSON格式导出的Adobe After Effects动画,并在移动设备和彻底的React Native上本地渲染矢量动画。

这意味着,使用Lottie,您可以简单地从设计团队获取动画文件,将其作为JSON导出,然后将其放入您的应用程序中,这将与它们在后期效果环境中的外观一样好。

从我个人的角度来看,优点还在于,您可以节省大量时间来尝试通过其他方式(例如通过代码实现修改图层或形状)来执行动画,由于JSON文件的尺寸较小,您将节省大量空间并且您的应用将变得超轻量级,或者,如果您愿意,也可以远程存储JSON文件,然后按需下载它们。

因此,如果您想要提供以下功能:

高质量动画,小文件大小(或远程存储),快速实施和易于集成

乐天是解决方案。 所有这些事情都是可能的,并且通过这篇文章您将学习如何做💪😎。

  • Xcode
  • Github帐户
  • 迦太基/ CocoaPods [基本知识]
  • 创意[选择动画文件😅]

让我们从创建一个简单的iOS App开始,只需打开Xcode-> File-> New-> Project-> Single View App

让我们为项目指定一个名称,并将Language设置为Swift

要安装Lottie,我们有两个选择(两个都可以使用)

  • 可可豆
  • 迦太基

我本打算使用迦太基作为这篇文章,因为我想在迦太基上练习更多的技能,但我只是意识到已经有一段时间了,因为我不使用Cocoapods,所以..让我们两个都做吧..决定哪个可以满足您的要求。

1:关闭您的XCode项目

2:转到存储项目的文件夹

3:创建一个PodFile

4:将Lottie Pod添加到PodFile: pod 'lottie-ios'

5:运行: pod install

1:关闭您的XCode项目

2:转到存储项目的文件夹

3:创建一个Cartfile

4:运行carthage update

5:在应用程序目标的“ 常规设置”选项卡上的“ 嵌入式二进制文件”部分中,将要使用的每个框架从磁盘上的Carthage / Build文件夹中拖放。

现在我们已经准备好环境,可以开始在动画中工作了。

我们打开项目并在情节提要中添加一个Container UIView,如果您希望为该视图设置Constraints and Layout,则此视图将成为动画的容器。

可选,您可以设置与UIView关联的插座,可以将其称为animationContainer。

在继续之前,我们需要在我们的项目中获得一个动画示例文件,我最喜欢的Lottie Animation Files来源是官方的:https://www.lottiefiles.com/

继续下载所需的任何JSON文件,并将其包含在我们的项目中。

我让这款Techno企鹅开始:

https://www.lottiefiles.com/storage/datafiles/u1A8jpnhAl7qr1S/data.json

在我们的’ViewController.swift’类中,我们应该在类的顶部添加import Lottie ,以便可以访问Lottie库的功能。

viewDidLoad方法中,添加下一个代码实现:

我将解释每一行以澄清实现:

20:通过设置本地资源名称(json文件)来创建LOTAnimationView实例

21:仅在此演示中,我将为“动画”视图设置框架,使其与容器的框架相同

22:将animationView添加到容器

23:使用play:方法play:我们告诉LOTAnimation对象开始动画

如果正确设置了所有内容,并且实现方式与此博文相同,则您应该能够运行该应用程序并查看容器中显示的动画:

您可以对服务器中的远程动画存储执行相同的操作,这将使您可以自由切换动画,而无需任何代码更改/发行要求或更新。

如果您对此帖子有任何疑问,请随时与我联系。

这些是在您的项目中使用Lottie的非常有用的链接,并且您还将找到一个github链接,其中包含用于本文的示例应用程序。

乐蒂Github:

https://github.com/airbnb/lottie-ios

乐透文件:

https://www.lottiefiles.com/

示例应用回购:

https://github.com/1marcosgn/MyLottieApp