lott ie - ios блок завершения анимации вызывается немедленно - PullRequest
0 голосов
/ 02 апреля 2020

Я использую лот ie - ios (3.1.6) для реализации своего рода индикатора загрузки во время отправки запроса API. Анимация json - это весь поток от начала до конца, который я воспроизводил с самого начала, зацикливая среднюю часть неизвестное количество раз, и когда ответ API получен, я пытаюсь плавно завершить sh анимация с того места, где я сейчас нахожусь.

На самом деле происходит следующее: при получении ответа API мой блок завершения немедленно запускается без завершения анимации.

func showLoading() {
    animationView.play(fromFrame: 0, toFrame: 546) { [weak self]  _ in
        self?.animationView.loopMode = .loop
        self?.animationView.play(fromFrame: 348, toFrame: 546)
}

func dismissLoading(animated: Bool, completion: (() -> Void)?) {
   if animationView.isAnimationPlaying {
        animationView.play(fromFrame: animationView.currentFrame, toFrame: 599, loopMode: .playOnce, completion: { _ in
            UIView.animate(
                withDuration: animated ? 0.3 : 0,
                animations: {
                    self.containerView.alpha = 0.0
                },
                completion: { [weak self] _ in
                    completion?()
                }
            )}
        )
    }
}

Спасибо!

1 Ответ

0 голосов
/ 04 апреля 2020
func showLoading() {
    animationView.play(fromFrame: 0, toFrame: 546) { finished in
        if finished {
            self.animationView.play(fromFrame: 348, toFrame: 540, loopMode: .loop) 
        }
    }
}

func dismissLoading(animated: Bool, completion: (() -> Void)?) {
   animationView.play(fromFrame: animationView.realtimeAnimationFrame, toFrame: 599, loopMode: .playOnce, completion: { _ in
        UIView.animate(
            withDuration: animated ? 0.3 : 0,
            animations: {
                self.containerView.alpha = 0.0
            },
            completion: { [weak self] _ in
                self?.uninstallProcessingViews()
                completion?()
            }
        )
    })
}

Разобрался. Будьте очень осторожны с вложенными анимациями - воспроизведение другого сегмента может отправить отмену вверх по цепочке и прервать ее позже, когда вы этого не ожидаете.

...