Проблемы с загрузкой анимации в Lottie

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

Я установил стручки какао, добавил библиотеку Lottie, загрузил файл json для воспроизведения. Я создал UIImageView, который установил в класс AnimationView.

    @IBOutlet weak var animationView: AnimationView!

    let filename = "bb8"

 func startAnimation() {

        let animation = Animation.named(filename)
        animationView.animation = animation
        animationView.contentMode = .scaleAspectFit
        animationView.play()
    }

Я также пробовал другой подход, но он не работает

        let path = Bundle.main.path(forResource: "bb8",
                                    ofType: "json") ?? ""
        animationView.animation = Animation.filepath(path)
        animationView.contentMode = .scaleAspectFit
        animationView.play()

Я ожидаю, что мой AnimationView покажет что-то, кроме того, что я вижу на раскадровках.


person Blaj Bogdan    schedule 07.09.2019    source источник


Ответы (1)


Мне удалось это исправить, кажется, с раскадровкой больше не справишься. Я создал AnimationView программно, у меня был второй фрагмент кода, и он сработал.

    var animationView: AnimationView = {
        var av = AnimationView()

        return av
    }()

    func initUI() {
        self.view.backgroundColor = .white
        animationView.backgroundColor = .white

        view.addSubview(animationView)
        animationView.translatesAutoresizingMaskIntoConstraints = false

        animationView.widthAnchor.constraint(equalToConstant: 250).isActive = true
        animationView.heightAnchor.constraint(equalToConstant: 250).isActive = true
        animationView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
        animationView.centerYAnchor.constraint(equalTo: self.view.centerYAnchor).isActive = true
    }
func startAnimation() {
        let path = Bundle.main.path(forResource: "bb8",
                                    ofType: "json") ?? ""
        animationView.animation = Animation.filepath(path)
        animationView.contentMode = .scaleAspectFit
        animationView.loopMode = .loop
        animationView.play()


    }

Мне удалось решить эту проблему и программно создать свой первый интерфейс. Этот код можно использовать, если у других людей такая же проблема, и они не знакомы со Swift и Lottie.

person Blaj Bogdan    schedule 07.09.2019
comment
Отличное решение! - person yasser h; 10.06.2020