OC使用时,需要通过swift透出方法供OC使用
// 此处文件名可以从Build Settings下搜索Generated Header Name的值得出
#import <Test-Swift.h>
target 'iOS' do
use_frameworks!
# 此处
pod 'lottie-ios'
end
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 = true
lotView.loopMode = .loop
lotView.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获取AnimationView
print("点击了AnimationView")
}
}
// 1. 播放
lotView.play()
// 2. 暂停
lotView.pause()
// 3. 取消
lotView.stop()