#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")
.