IBOutlet AnimationView в лотте ie не показывает анимацию - PullRequest
1 голос
/ 09 марта 2020

Я создал @IBOutlet weak var animationView: AnimationView! Затем в ViewController я добавил UIView, изменив его класс с UIView на AnimationView. После подключения к розетке я добавляю этот код в viewDidLoad() моего класса:

let animation = Animation.named("sticky", subdirectory: "Lottie-files")
animationView.animation = animation
animationView.loopMode = .loop
animationView.contentMode = .scaleAspectFill

Затем в viewDidAppear() Я добавил:

animationView.play()

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

[Раскадровка] Неизвестный класс AnimationView в файле Interface Builder.

Это предупреждение устраняется с помощью enter image description here

Но анимация все равно не появляется. Нет предупреждения, нет ошибки, просто не отображается.

Ответы [ 3 ]

1 голос
/ 09 марта 2020
  1. Вы должны запустить анимацию в viewDidAppear или что-то с именем после viewDidLoad, например: viewWillAppear
public override func viewDidLoad() {
    super.viewDidLoad()

    addAnimation(to: animationView, name: "sticky")
}

public override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    animationView.play()
}

private func addAnimation(to view: AnimationView, name: String) {
    let animation = Animation.named(name, subdirectory: "Lottie-files")
    view.animation = animation
    view.loopMode = .loop
    view.contentMode = .scaleAspectFill
}

БОНУС

Статья Экрамула Хока о жизненном цикле контроллера представления


Убедитесь, что эти

Вы должны написать Lotie в разделе Identity Inspector вашего представления в правой панели Interface Builder.

Interface Builder


Проверить путь к подкаталогу. Это может быть потому, что xcode не может найти файл в подкаталоге Lott ie -files. Попробуйте переместить его в главный каталог и попробуйте.
0 голосов
/ 09 марта 2020

Вы можете установить программно

 import Lottie

, затем добавить представление анимации в вашем контроллере представления, установить анимацию lott ie в вашей раскадровке -> animationView -> класс -> AnimationView и модуль -> Lott ie

 @IBOutlet weak var animationView: AnimationView!

 //Initialise a Lottie view with frame
    let customAnimationView = AnimationView(name: "Your lotti file name")
    customAnimationView.frame = CGRect(x: 0, y: 0, width: 30, height: 30)

    //Do your configurations
    customAnimationView.loopMode = .loop
    customAnimationView.backgroundBehavior = .pauseAndRestore

    //And play
    customAnimationView.play() 
    animationView.addSubview(customAnimationView)
0 голосов
/ 09 марта 2020

Согласно документу lot ie вы должны вызвать

play ()

функция внутри viewDidAppear.

public override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    animationView.play()
}

Пожалуйста, проверьте следующая ссылка

https://github.com/airbnb/lottie-ios/blob/master/Example/lottie-swift/ViewController.swift

ПРИМЕЧАНИЕ. В некоторых случаях необходимо проверить проблему с подкаталогом

Чтобы добавить Ссылки на папки

Не Группы

Для получения дополнительной информации по этому разделу, пожалуйста, перейдите по следующей ссылке.

http://www.thomashanning.com/xcode-groups-folder-references/

Happy Coding:)

...