2015-04-25 2 views
2

У меня есть анимация в моем приложении, которая в основном просто создает и сжимается, чтобы сделать очевидным для пользователя, что они должны касаться.Анимация останавливается после перехода на другой контроллер вида

Проблема заключается в том, что, когда она отображается нормально, когда открывается первый вид, она не работает, если я перехожу на другой контроллер представления (с помощью segue), а затем возвращаюсь (ничего не происходит).

Вот мой код:

override func viewWillAppear(animated: Bool) { 
    expandAnimation() 
} 

func expandAnimation() { 
    var animation = CABasicAnimation(keyPath: "transform.scale") 
    animation.toValue = NSNumber(float: 0.9) 
    animation.duration = 1 
    animation.repeatCount = 100 
    animation.autoreverses = true 
    animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 
    appDevButton.layer.addAnimation(animation, forKey: nil) 
} 

Я уверен, что это легко исправить, но я не мог найти любую информацию в Интернете.

+1

Не забудьте вызвать супер в viewWillAppear :. – rdelmar

+0

Кажется, не имеет никакого значения ... – user3746428

ответ

3

Удалить анимацию с кнопки, когда вы покидаете вид,

override func viewDidDisappear(animated: Bool) { 
     super.viewDidDisappear(animated) 
     appDevButton.layer.removeAllAnimations() 
    } 
+0

Это исправить, но мне также пришлось изменить его с 'viewWillAppear()' на 'viewDidAppear()'. Благодаря! – user3746428

+0

@ user3746428 Я пробовал это, но он, похоже, не работал ... вы сделали что-то по-другому, чем указано выше? в настоящее время у меня есть метод, вызываемый в методе viewDidAppear с помощью [super viewDidAppear: YES]; , и то же самое для viewDidDisappear. Не знаю, почему он не работает. –

+0

У меня была аналогичная проблема, и разрешил ее просто, вызвав 'animation()' в 'viewDidAppear()' ** без ** 'removeAllAnimations()' в 'viewDidDisappear'. Это плохая практика? – Dustin

0

Try Решение:

// Allows the animation to appear on View Controller 
    override func viewWillAppear(_ animated: Bool) { 
     super.viewDidAppear(true) 

     // Function call 
     expandAnimation() 
    } 

    // Allows the animation to disappear from View Controller 
    override func viewDidDisappear(_ animated: Bool) { 
     super.viewDidDisappear(true) 

     // Function call 
     expandAnimation() 
    }