Анимация Лотти не отображается в iOS

#ios #swift #animation #lottie

#iOS #swift #Анимация #лотти

Вопрос:

Я обновился до последней версии (3.0) Lottie и заметил различные изменения, которые заставили меня изменить свой код.

Ранее я хотел иметь возможность размещать анимацию через storyboard , и для этого я использовал LOTAnimatedControl , а затем в коде обратился к animationView элементу управления, чтобы установить анимацию через LOTAnimatedControl.animationView.setAnimation(named: "x") .

Теперь, похоже, это вообще невозможно.

Что, как я думал, я мог бы тогда сделать, так это .. 1. Установить uiview выход в раскадровке. 2. Вложенный просмотр, AnimationView инициализированный в коде. 3. Настройка анимации с помощью AnimationView.animation = Animation.named("name")

Я все это настроил, но не могу увидеть анимацию при ее запуске. При отладке я вижу, что Animation.named("x") выводится значение nil, но не уверен, почему. Я удалил .расширение json в названии и .файл json находится именно там, где он был раньше, когда он работал.

Приветствуются любые идеи. Ниже приведены мои настройки.

 @IBOutlet weak var activityIndicatorView: UIView!

let activityIndicator = AnimationView()

activityIndicatorView.addSubview(activityIndicator)
    NSLayoutConstraint.activate([
        activityIndicator.centerXAnchor.constraint(equalTo: activityIndicatorView.centerXAnchor),
        activityIndicator.centerYAnchor.constraint(equalTo: activityIndicatorView.centerYAnchor),
        activityIndicator.widthAnchor.constraint(equalToConstant: activityIndicatorView.frame.width),
        activityIndicator.heightAnchor.constraint(equalToConstant: activityIndicatorView.frame.height)
        ])
let animation = Animation.named("name")
    activityIndicator.animation = animation
    activityIndicator.isHidden = false
    activityIndicator.loopMode = .loop
    activityIndicator.play()
  

Ответ №1:

Вам нужно

 activityIndicator.translatesAutoresizingMaskIntoConstraints = false
  

для правильного добавления программных ограничений

Ответ №2:

Все еще не уверен, почему я получал nil, когда следовал документации quickstart lottie ios, но мой обходной путь был связан с инициализацией AnimationView , я бы просто объединил его с фактической анимацией при инициализации — AnimationView(name: "name") .