Анимация не работает с autolayout (swift) - PullRequest
0 голосов
/ 06 мая 2018

Всякий раз, когда я пытаюсь анимировать объекты, которые я запрограммировал на экран, с помощью автоперестановок, возникает много проблем. Когда я пытался анимировать UIImageView, вместо перехода к следующему изображению он дублировал бы объект. Вот код для макета:

    icon.topAnchor.constraint(equalTo: circle.bottomAnchor, constant: 10).isActive = true
    icon.centerXAnchor.constraint(equalTo: circleView.centerXAnchor).isActive = true
    icon.widthAnchor.constraint(equalToConstant: 40).isActive = true
    icon.heightAnchor.constraint(equalToConstant: 40).isActive = true 

Вот код для анимации:

private func animateIcon(){
    UIView.transition(with: icon,
                      duration: 0.75,
                      options: .transitionCrossDissolve,
                      animations: { self.icon.image = UIImage(named: "CultureIcon") },
                      completion: nil)
}

Когда я добавляю UIImageView на экран, используя его рамку, анимация работает точно так, как задумано.

РЕДАКТИРОВАТЬ: Я думаю, что нашел проблему. Я вызывал функцию установки для этого представления в viewDidLayoutSubviews (). Как только я убрал функции оттуда, переходы сработали.

Однако я также использую функцию, предоставляемую @AmberK, которая, возможно, внесла свой вклад в решение!

1 Ответ

0 голосов
/ 06 мая 2018

Дайте это попробовать ...

private func animateIcon(){
self.icon.image = UIImage(named: "CultureIcon")
UIView.transition(with: icon,
                  duration: 0.75,
                  options: .transitionCrossDissolve,
                  animations: { self.view.layoutIfNeeded() },
                  completion: nil)
}

Редактировать: Исправлен формат

...