Swift加载Lottie

embedded/2024/11/15 4:25:11/

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/embedded/20298.html

相关文章

uniapp小程序订阅通知

服务 开通订阅服务 const tmplIds ref([tsdasdadasdfgdrtwexQHdEsjZV])//换成自己的 function confirm(){uni.requestSubscribeMessage({tmplIds: tmplIds.value,success: (res) > {// console.log(res)let auth_notice res[tmplIds.value[0]] accept ? 1 : 2 //1是接…

[ESP32]:TFLite Micro推理CIFAR10模型

[ESP32]&#xff1a;TFLite Micro推理CIFAR10模型 模型训练 数据集处理 from keras.datasets import cifar10 from keras.preprocessing.image import ImageDataGenerator from keras.models import Sequential, load_model, Model from keras.layers import Input, Dense, …

《Git---Windows Powershell提交信息中文乱码解决方案》

解释&#xff1a; Windows PowerShell中的Git乱码通常是因为字符编码不正确或Git配置不支持Windows系统的默认编码导致的。Git在处理文件时可能使用UTF-8编码&#xff0c;而Windows系统的命令行工具&#xff08;如PowerShell&#xff09;默认使用的是Windows-1252或GBK编码。 …

MAC有没有免费NTFS tuxera激活码 tuxera破解 tuxera for mac2023序列号直装版 ntfs formac教程

Tuxera NTFS 2023破解版是一款非常好用的在线磁盘读写工具&#xff0c;该软件允许mac用户在Windows NTFS格式的硬盘上进行读写操作&#xff0c;Mac的文件系统是HFS&#xff0c;而Windows则使用NTFS格式&#xff0c;这导致在Mac系统上不能直接读写Windows格式的硬盘。然而&#…

排序FollowUp

FollowUp 插入排序 直接插入排序 时间复杂度:最坏情况下:0(n^2) 最好情况下:0(n)当数据越有序 排序越快 适用于: 待排序序列 已经基本上趋于有序了! 空间复杂度:0(1) 稳定性:稳定的 public static void insertSort(int[] array){for (int i 1; i < array.length; i) {int…

使用 Python 保留 Excel 表头和第一行数据的两种方法

在处理 Excel 文件时&#xff0c;有时我们需要保留表格的表头和部分数据&#xff0c;而删除其他无用的行。本文将介绍如何使用 Python 中的 openpyxl 库和 pandas 库来实现这一目标。 方法一&#xff1a;使用 openpyxl 库 步骤&#xff1a; 1、导入必要的库&#xff1a;从 op…

【鸿蒙开发】闪屏页面练习

1. 创建页面 Index.ets Entry Component struct Index {build() {Column() {Text("首页").fontSize(50).fontWeight(FontWeight.Bold)}.width(100%).height(100%)} }2. 创建页面 SplashScreen.ets Entry Component struct SplashScreen {State message: string Sp…

淘宝API接口大全:淘宝app商品详情数据接口

淘宝APP商品详情数据接口是用于获取商品详情信息的专用API&#xff0c;适用于移动应用开发者使用。 要使用这个接口&#xff0c;你需要遵循以下步骤&#xff1a; 了解和申请API权限&#xff1a;在使用淘宝API接口之前&#xff0c;需要先前往淘宝开放平台了解相关的API文档&am…