gpt4 book ai didi

ios - 是否可以在 Lottie 框​​架中组合两个动画

转载 作者:行者123 更新时间:2023-11-28 13:29:05 24 4
gpt4 key购买 nike

swift版本为5,lottie版本为3.1.1

我想用 Lottie 显示两个动画 Json 文件,这样第一个动画淡入淡出,完成后淡出,另一个淡入,我必须循环并在无限循环中进行。

boardAnimationViewForSecondSlide = AnimationView(frame: CGRect(x: 0, y: 0, width: frame.width, height: frame.width * (690 / 750)))
boardAnimationViewForSecondSlide?.animation = Animation.named("Slidetwop1")
slide.addSubview(boardAnimationViewForSecondSlide)

然后我为 handle completion play 的方法定义了一个闭包

private var animationState: Int = 0 // 0 first slid, 1 second slide
private var changeStateInSlide2: (Bool) -> Void = { finish in
if animationState == 0 {
boardAnimationViewForSecondSlide.animation = Animation.named("Slidetwop2.json")
playSecondPage = true
} else {
boardAnimationViewForSecondSlide.animation = Animation.named("Slidetwop1.json")
playSecondPage = true
}
}


fileprivate var playSecondPage: Bool {
get {
return false
}
set {
if newValue {
boardAnimationViewForSecondSlide.play(completion:changeStateInSlide2)
}
}
}

最佳答案

我认为最简单的方法是创建一个函数来启动动画。

例子:

/// Start animation with Lottie
func startAnimation(viewName: AnimationView, jsonName: String) {
viewName.isHidden = false
viewName.animation = Animation.named(jsonName)
viewName.play { (_) in
viewName.isHidden = true
}

在此之后,您可以简单地一个接一个地调用该方法:

startAnimation(viewName: checkAnimation, jsonName: "Slidetwop1")
startAnimation(viewName: checkAnimation, jsonName: "Slidetwop2")

或者使用完成处理程序调用第二个。

编辑:对于循环你可以使用这个解决方案:

/// Start animation with Lottie
func startAnimation() {
animationLottieView.animation = Animation.named("Slidetwop1")
animationLottieView.play { (finished) in
// completion handler
self.animationLottieView.animation = Animation.named("Slidetwop2")
self.animationLottieView.play { (finishedAnimation) in
self.startAnimation()}
}
}

关于ios - 是否可以在 Lottie 框​​架中组合两个动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57783045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com