Lottie动画库的一些坑:渐变描边与官方demo报错

Lottie是一个强大的第三方动画支持库,通过下发的json文档读取绘制动画。近期项目中有用到,遇到一个大坑,网上和官方论坛也搜不到,记录一下,也希望能帮到一些人。

1. 暂时不支持渐变描边

设计人员给了我一个json动画文件,然后这个文件在他们web官网是显示的,在他们LottieFiles的iOS APP中扫码也是显示的,就是在我们app里不显示!

原因 :因为web版本支持渐变描边!因为安卓版本也支持渐变描边!OC版本不支持!

他们自己的APP是Swift代码写的,Swift版本的Lottie是支持渐变描边的,而截止目前的iOS版本中,2.5.3版本,Objective-C版本不支持渐变描边,这个在json文件中表现为ty:gs,这个ty就是type的缩写,这个gs就是gradient stroke的缩写,渐变描边的意思,如果是动画是渐变填充(gf)的就没问题。

这里我解释下,shape group是一个图形组,每一组都是一种绘制,分发给不同的子类处理,当发现ty是gs的时候,直接报错,如下图源码:

所以如果你的json动画无法显示,在确定调用代码没问题的情况下,优先看看json文件中有没有这个gs,或者去你Lottie的源码里看看有没有支持gs模式。

注意,如果你的项目比较小,换库代价小,就换swift版本吧。

二、Lottie动画库的swift官方demo报错问题

我下载了他们的Swift版本,GitHub上的源码,下载到本地有问题,编译报错,如下

大坑啊,他们自己添加的一个扩展方法,无法找到并调用!

通过阅读Swift源码可以知道,这里这个函数就是通过json名称和函数找到json,然后构造成animation对象并返回,所以我修改过后的代码如下:

当然,同期尽量要修改的,还有调用处,

嗯,这就很OC,也很简洁了。

将自己的json拖入工程Supporting Files中,编译运行以后,一切OK!

注:找到这个类的这一行,你会发现为什么Swift版本为什么能支持渐变描边

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容