【问题标题】:How do I play and auto reverse a Lottie animation just once?如何播放和自动反转 Lottie 动画一次?
【发布时间】:2021-10-19 22:10:48
【问题描述】:

我目前正在尝试使用 Lottie 框​​架向我的应用程序添加动画。我的代码如下:

    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .lightGray
        let starAnimationView = AnimationView()
        // The JSON file
        let starAnimation = Animation.named("qz-checklist-eve")
        starAnimationView.animation = starAnimation
        starAnimationView.frame = CGRect(x: 0, y: 0, width: 400, height: 400)
        starAnimationView.center = self.view.center
        starAnimationView.contentMode = .scaleAspectFill
        view.addSubview(starAnimationView)
        starAnimationView.loopMode = .autoReverse
        starAnimationView.play()
    }

这可行,但动画会不断循环。我似乎无法找到如何将其设置为单个动画。我检查了 Lottie 文档,上面写着:

var AnimationView.loopMode: LottieLoopMode { get set }

设置play 调用的循环行为。默认为playOnce 选项: playOnce:动画播放一次然后停止。 : loop:动画会从头到尾循环直到停止。 : autoReverse:动画将向前播放,然后向后播放并循环播放直到停止。 : repeat(amount): 动画会从头到尾循环播放到一定次数。 : repeatBackwards(amount):动画将向前播放,然后向后播放一定次数。 #

没有.repeatBackwards(amount) 选项。有谁知道如何让它工作?

【问题讨论】:

    标签: ios swift lottie


    【解决方案1】:

    这对我来说是这样的:

        //play animation in full reverse
        animationView.play(fromFrame: lastFrame, toFrame: 1.0, loopMode: .playOnce) { finished in ... }
    

    要获取最后一帧,需要正常运行,完成后捕获:

        animationView.loopMode = .playOnce
    
        animationView.play { finished in
                
            if finished {
                
                let lastFrame = animationView.currentFrame    
                print("Last frame is: \(animationView.currentFrame)")
    
            }
    
        }
    

    【讨论】:

      【解决方案2】:

      或者,如果您不想拍摄最后一帧,您可以这样做:

      animationView.play(fromProgress: 1, toProgress: 0, loopMode: .playOnce) {}
      

      【讨论】:

        【解决方案3】:

        为了让您的动画只运行一次,您所要做的就是删除引用循环的行 (starAnimationView.loopMode = .autoReverse)。 你的代码很完美,你只剩下那一行了。希望对您有所帮助

        【讨论】:

        • 它已经有starAnimationView.loopMode = .autoReverse。检查代码
        猜你喜欢
        • 1970-01-01
        • 2020-10-24
        • 1970-01-01
        • 1970-01-01
        • 2018-04-09
        • 1970-01-01
        • 2022-10-02
        • 1970-01-01
        • 2013-09-25
        相关资源
        最近更新 更多