2015-04-17 3 views
1

У меня есть простой вопрос :), но я прошу получить преимущества от замечательных программистов в сообществе stackoverflow.UIView animateWithDuration start over

Я использую UIView.animateWithDuration в моем представлении источника в viewDidAppear анимации начать как следует по телефону startTheStory():

override func viewDidAppear(animated: Bool) { 

    if !animate { 

     startTheStory() 
    } 
} 

Тогда сделка с точки зрения назначения, используя пользовательский SEGUE вид.

Моя проблема при запуске транзакции анимации в представлении источника начать, так что я пытался остановить его следующим кодом:

override func viewWillDisappear(animated: Bool) { 
    animate = true 

    self.view.layer.removeAllAnimations() 
} 

Но это не работает.

Также я попытался в prepareForSegue(), но он не работает.

Любая идея?

Благодаря

ответ

1

удалите эту строку self.view.layer.removeAllAnimations()

и добавить эти строки

[CATransaction begin] 
[_backgroundView.layer removeAllAnimations] 
[CATransaction commit] 
[CATransaction flush] 

Помнить импортировать QuartzCore/QuartzCore.h

Причина, почему ваши анимации звезды над потому, что

if !animate { 

     startTheStory() 
    } 

всегда выполняется в методе viewDidAppear, потому что для «анимации» установлено значение «false» каждый раз, когда вид снова появится на экране. Настройка «оживить» на «True» в viewWillDisappear снова будет сброшена на «False» при вызове viewDidAppear. Поэтому постарайтесь сохранить «animate» var global в делетете приложения и установить значение, которое должно сделать трюк.

+0

Благодарим за помощь. Тем не менее анимация начинается с – Mariam

+0

@Mariam Я отредактировал свой ответ. – Manoj

Смежные вопросы