React Native iOS集成Lottie启动屏AppDelegate.m未声明标识符错误如何解决
错误原因
这两个报错的核心是Dynamic类未被正确定义和暴露给Objective-C:Dynamic是用于桥接Lottie Swift接口与OC代码的自定义类,Xcode找不到这个类的定义,自然会判定Dynamic和它的实例t都是未声明标识符。
解决步骤
- 在Xcode项目中新建Swift文件,命名为
Dynamic.swift,创建时按照Xcode提示同意生成桥接头文件 - 在
Dynamic.swift中写入以下代码,必须添加@objc修饰符才能让Objective-C识别到类和方法:
import UIKit import Lottie @objc class Dynamic: NSObject { @objc func createAnimationViewWithRootView(_ rootView: UIView, lottieName: String) -> UIView { let animationView = LottieAnimationView(name: lottieName) animationView.frame = rootView.bounds animationView.center = rootView.center animationView.contentMode = .scaleAspectFit return animationView } @objc func playWithAnimationView(_ animationView: LottieAnimationView) { animationView.play { _ in RNSplashScreen.hide() } } }
- 确认你现有代码中导入的
#import "EmpathoApp-Swift.h"是正确的项目Swift桥接头,这个文件是Xcode自动生成的,会自动把所有标记了@objc的Swift类暴露给OC层 - 检查你的
splashscreen.json动画文件已经添加到Xcode项目资源目录,且勾选了对应项目的target - 执行Xcode清理缓存操作(快捷键
Command + Shift + K)后重新编译即可
额外注意
如果你使用的是低于3.0版本的Lottie iOS库,需要把代码中的LottieAnimationView替换为旧版本的类名AnimationView。
内容的提问来源于stack exchange,提问作者Daniel Döbereiner
相关产品推荐
相关产品推荐

