lottie-ios 的集成及使用

2024-02-26 07:18
文章标签 使用 ios 集成 lottie

本文主要是介绍lottie-ios 的集成及使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

基于以上的问题, 建议使用Lottie的场合为复杂的播放式形变动画, 因为形变动画由程序员一点点的写路径确实不直观且效率低. 但即便如此, Lottie也是我们在CoreAnimation之后一个很好的补充.

以上健呗的Demo地址: https://github.com/syik/JR

直播伴侣地址: https://github.com/syik/BulletAnalyzer

 

 

Lottie 是一个可应用于Andriod和iOS的动画库,它通过bodymovin插件来解析Adobe After Effects 动画并导出为json文件,通过手机端原生的方式或者通过React Native的方式渲染出矢量动画。
lottie三方框架地址:https://github.com/airbnb/lottie-ios

总而言之,咱们开发人员有了这个三方框架,再也不用去苦恼各种动画的实现了,还得跟UI设计人员扯皮。这个框架,UI设计人员将动画图制作好了后,利用工具转为json文件,咱们通过框架提供的方法加载json就可以实现各种精彩的动画,但是有一个缺点,这个框架的动画效果只能作为展示,不能产生交互行为。进入正题,开始集成。

一、通过cocoapods集成。

1.在你的podfile中添加:
pod 'lottie-ios'

2.运行
pod install

  • 假如你的项目之前集成过其他三方,比如Masonry,这个时候你编译项目,可能会报code1错误,当然没报错最好。稍安勿躁,人家官方文档说了,还得安装Carthage。

二、安装Carthage

1、安装 Homebrew

  • 将以下命令粘贴至终端即可
    第一步:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

第二步:

brew update

2、安装 Carthage

brew install carthage

可通过下面这条命令来查看版本。

carthage version

3、使用 Carthage 安装依赖

第一步:

cd ~/路径/项目文件夹

第二步:创建一个空的 Carthage 文件 Cartfile

touch Cartfile

第三步:使用 Xcode 打开 Cartfile 文件

open -a Xcode Cartfile

第四步:在cartfile里面加一行代码

github "airbnb/lottie-ios" "master"

第五步:终端执行更新命令

carthage update --platform iOS

OK,你再编译项目试试,,这个时候code1错误没有了。是不是很惊喜。注意:项目名字最好为英文,因为这个框架是国外的,假如项目名字包含中文也会出现想像不到的错误。

那么问题来了,这个时候可能会出现这种情况:导入头文件还有索引,但是导入后总是报错,报找不到那个头文件,这种时候,只需多重启几次Xcode。就能OK

三、lottie的使用

Lottie支持iOS 8 及其以上系统。当我们把动画需要的images资源文件添加到Xcode的目标工程的后,Lottie 就可以通过JSON文件或者包含了JSON文件的URL来加载动画。

  • 最简单的方式是用LOTAnimationView来使用它,这也是最常用的一种方式。
LOTAnimationView *animation = [LOTAnimationView animationNamed:@"Lottie"];
[self.view addSubview:animation];
[animation playWithCompletion:^(BOOL animationFinished) {// Do Something
}];
  • 如果你使用到了多个bundle文件,你可以这么做:
LOTAnimationView *animation = [LOTAnimationView animationNamed:@"Lottie" inBundle:[NSBundle YOUR_BUNDLE]];
[self.view addSubview:animation];
[animation playWithCompletion:^(BOOL animationFinished) {// Do Something
}];
  • 或者你可以用代码通过NSURL来加载,这种情况一般是将动画效果保存在服务器,动态加载。
LOTAnimationView *animation = [[LOTAnimationView alloc] initWithContentsOfURL:[NSURL URLWithString:URL]];
[self.view addSubview:animation];

Lottie 支持iOS中的UIViewContentModes的 aspectFit, aspectFill 和 scaleFill这些属性。

  • 你可以控制动画的进度
CGPoint translation = [gesture getTranslationInView:self.view];
CGFloat progress = translation.y / self.view.bounds.size.height;
animationView.animationProgress = progress;
  • 想要任意视图来给Lottie View中的动画图层做遮罩吗 ?只要你知道After Effects中对应的图层的名字,那就是小菜一碟的事了:
UIView *snapshot = [self.view snapshotViewAfterScreenUpdates:YES];
[lottieAnimation addSubview:snapshot toLayerNamed:@"AfterEffectsLayerName"];
  • Lottie 带有一个UIViewController动画控制器,可以用来自定义转场动画!
-(id<UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presentedpresentingController:(UIViewController *)presentingsourceController:(UIViewController *)source {LOTAnimationTransitionController *animationController = [[LOTAnimationTransitionController alloc] initWithAnimationNamed:@"vcTransition1"fromLayerNamed:@"outLayer"toLayerNamed:@"inLayer"];return animationController;
}



作者:奇怪的她的他
链接:https://www.jianshu.com/p/1f251a6e2e83
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

这篇关于lottie-ios 的集成及使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/748064

相关文章

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1