Swift 4 UIView.Animate не стреляет и игнорирует анимацию - PullRequest
0 голосов
/ 18 сентября 2018

Следующий код прекрасно работает во всех моих viewControllers, кроме 1. Цель кода - анимировать стрелку слева направо в представлении, постепенно уменьшая альфа до 1.0.arrowImage - это UIImageView, который подключен через розетку на раскадровке.Может кто-нибудь сказать мне, почему этот viewController не запускает анимацию?Я использую последнюю версию Xcode и iOS 11.4.Заранее спасибо.

   override func viewDidLoad() {
    super.viewDidLoad()

    self.arrowImage.alpha = 0.0
    self.arrowImage.frame = CGRect(x: 1200, y: 412, width: 809, height: 236)


    if self.arrowImage.alpha == 0.0 {
        UIView.animate(withDuration: 20.0, delay: 1.0, usingSpringWithDamping: 0.6, initialSpringVelocity: 0.8,  options: .curveEaseIn, animations:
            {
                // self.startButton.center = CGPoint(x:607 + 759/2 ,y:265)
                self.arrowImage.frame = CGRect(x: 0, y: 412, width: 809, height: 236)
                self.arrowImage.alpha = 1.0
        })


    }

1 Ответ

0 голосов
/ 18 сентября 2018

Скорее всего, представление изображения имеет ограничения AutoLayout, и после viewDidLoad размер представления содержимого контроллера представления изменяется для текущего размера дисплея, и ограничения применяются. Это приведет к тому, что изменения вашего кадра будут проигнорированы.

Я бы ожидал, что альфа-анимация все еще будет работать, поэтому ваше изображение должно анимироваться в течение 20 секунд (поэтому очень медленно.)

Если этого не произойдет, я бы предложил установить arrowImage.alpha на 1.0 без какой-либо анимации и убедиться, что он появляется. Если он все еще не появляется, значит что-то еще не так, и вам придется это выяснить.

Вы должны переместить свой код анимации в viewDidAppear, как предлагает BonanzaDriver, и вы должны создать IBOutlet для ограничения AutoLayout для положения x и анимировать константу этого ограничения в вашей анимации, а не пытаться анимировать кадр (поскольку AutoLayout часто отменяет изменения в вашем явные настройки рамки / границ.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...