Обновление ProgressBar / UILabel в реальном времени - PullRequest
0 голосов
/ 25 ноября 2018

Я использую библиотеку анимации Lottie и пытаюсь показать ход анимации с помощью индикатора выполнения или в виде числа от 0 до 1 в метке, но обновляется в режиме реального времени.

Я попытался изменитьэти значения на кнопку или проведите пальцем, и это прекрасно работает.Но я не знаю, как обновлять значения в режиме реального времени без взаимодействия с пользователем.

Я также пробовал DisptachQueue, но он не работает: / Я понимаю, что это, вероятно, немного ошибочно, но я пытался искатьотвечать на нескольких веб-сайтах безрезультатно.

У Лотти есть свойство animationProgress, поэтому я решил отправить эту информацию на панель или ярлык.

Tnx!

DispatchQueue.main.async {

// Modify progress value of a progress bar. ("animationProgress returns CGFloat")
  self.progressBar.progress = Float(self.animationView.animationProgress)

// Returning same value but as String to the label.
  self.progressLabel.text = 
  String(Float(self.animationView.animationProgress))
}

1 Ответ

0 голосов
/ 25 ноября 2018

Ваш код выполняет однократное чтение из self.animationView.animationProgress.В Lottie вы устанавливаете это свойство, чтобы определить, как далеко находится анимация.Часто это вычисляется в scrollViewDidScroll или аналогичном методе делегата.

Поэтому вам нужно установить индикатор выполнения одновременно с настройкой Lottie animationProgress.

Например:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let progress = scrollView.contentOffset.x / scrollView.contentSize.width

    animationView.animationProgress = progress
    progressBar.progress = Float(progress)
    progressLabel.text = "\(progress)"
}

В качестве примечания вы можете легко преобразовать числа в строки, используя интерполяцию строк, например "\(progress)".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...