Swift加载Lottie

server/2024/9/23 19:55:57/

OC使用时,需要通过swift透出方法供OC使用

// 此处文件名可以从Build Settings下搜索Generated Header Name的值得出
#import <Test-Swift.h>

一、导入包

target 'iOS' douse_frameworks!# 此处pod 'lottie-ios'
end

二、功能实现

1. 创建组件

swift">import Lottie@objcMembers class LottieAnimView: UIView, UIScrollViewDelegate {static let sharedManager: LottieAnimView = LottieAnimView()private var lotView: AnimationView = AnimationView()func createLottieView(path: String) {let sp = path.components(separatedBy: ".")if let filePath = Bundle.main.path(forResource: sp.first!, ofType: "json") {let animation = Animation.filepath(filePath)lotView.animation = animation}// 修改fill方式lotView.contentMode = .scaleToFill// true:视图会使用旧版的 Autoresizing Mask 来进行布局。这意味着视图的位置和大小将根据其父视图的边界和自身的自动布局规则进行自动调整// false:视图将使用 Auto Layout 进行布局。这意味着你可以通过约束(constraints)来精确地定义视图的位置、大小和相对关系。// 如果不设置此处,则设置宽高无效。好像只有在动态修改frame时无效lotView.translatesAutoresizingMaskIntoConstraints = truelotView.loopMode = .looplotView.frame = CGRect(x: 0, y: 0, width: 100, height: 100)// 添加点击事件let tapGesture = UITapGestureRecognizer(target: self, action: #selector(animationViewTapped))lotView.addGestureRecognizer(tapGesture)lotView.isUserInteractionEnabled = true// 此处根据需要添加到父级ViewController上UIApplication.shared.keyWindow?.rootViewController?.view.addSubview(lotView)}@objc func animationViewTapped(sender: UITapGestureRecognizer) {// 可以根据sender.view获取AnimationViewprint("点击了AnimationView")}
}

2. 常用方法

swift">// 1. 播放
lotView.play()// 2. 暂停
lotView.pause()// 3. 取消
lotView.stop()

三、注意

  1. 可以动态修改loopMode方式
  2. 我们的使用场景是在lua层先调用createLottieView,之后立马play,此时发现会动画卡在第一帧,怀疑是线程堵塞,在play之前让出CPU的时间片1个游戏帧即可

http://www.ppmy.cn/server/14220.html

相关文章

Linux系统安全:从面临的攻击和风险到安全加固、安全维护策略(文末有福利)

1. Linux面临的攻击与风险 1.1. Linux系统架构 Linux系统架构解读&#xff1a; 用户之间隔离内核态与用户态之间隔离用户进程一般以低权限用户运行系统服务一般以特权服务运行用户态通过系统调用进入内核态内核对系统资源进行管理和分配 1.2. Linux系统常见安全威胁 1.2.1.…

Tkinter是什么?

Tkinter是Python标准库中的一个模块&#xff0c;用于创建图形用户界面&#xff08;GUI&#xff09;应用程序。它提供了一组工具和组件&#xff0c;使开发者能够在Python中创建窗口、按钮、标签、文本框、菜单等各种界面元素&#xff0c;并通过这些元素构建交互式的用户界面。 T…

四川古力未来科技抖音小店:科技新宠,购物新体验

在当下数字化、智能化的时代&#xff0c;电商平台如雨后春笋般涌现&#xff0c;其中不乏一些富有创新精神和实力雄厚的科技企业。四川古力未来科技有限公司就是其中的佼佼者&#xff0c;其抖音小店更是凭借其独特的魅力和优质的服务&#xff0c;赢得了广大消费者的青睐。 一、科…

毕业设计注意事项(2024届更新中)

1.开题 根据学院发的开题报告模板完成&#xff0c;其中大纲部分可参考资料 2.毕设 根据资料中的毕设评价标准&#xff0c;对照工作量 3.论文 3.1 格式问题 非常重要&#xff0c;认真对比资料中我发的模板&#xff0c;格式有问题&#xff0c;答辩输一半&#xff01; 以word…

❤️新版Linux零基础快速入门到精通——第一部分❤️

❤️新版Linux零基础快速入门到精通——第一部分❤️ 非科班的我&#xff01;Ta&#xff01;还是来了~~~1. 来认识一下Linux吧!1.1 操作系统概述1.1.1 操作系统概述1.1.2 操作系统的发展史1.1.2.1 Unix1.1.2.2 Minix1.1.2.3 Linux 1.1.3 操作系统的发展 1.2 Linux初识1.2.1 Lin…

UE4_动画基础_根运动Root Motion

学习笔记&#xff0c;仅供参考&#xff01; 在游戏动画中&#xff0c;角色的碰撞胶囊体&#xff08;或其他形状&#xff09;通常由控制器驱动通过场景。然后来自该胶囊体的数据用于驱动动画。例如&#xff0c;如果胶囊体在向前移动&#xff0c;系统就会知道在角色上播放一个跑步…

linux权限维持(三)

5.vim python 扩展后门 适用于安装了 vim 且安装了 python 扩展 ( 绝大版本默认安装 ) 的 linux 系统。 cd /usr/lib/python2.7/site-packages && $(nohup vim -E -c "pyfile dir.py">/dev/null 2>&1 &) && sleep 2 && rm -f…

ChatGPT实战100例 - (18) 用事件风暴玩转DDD

文章目录 ChatGPT实战100例 - (18) 用事件风暴玩转DDD一、标准流程二、定义目标和范围三、准备工具和环境四、列举业务事件五、 组织和排序事件六、确定聚合并引入命令七、明确界限上下文八、识别领域事件和领域服务九、验证和修正模型十、生成并验证软件设计十一、总结 ChatGP…