2015-10-24 5 views
0

Я не могу сделать простую анимацию постепенного затухания в Xcode.Простая анимационная проблема Xcode 7 Swift

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

Вот мой код:

image.alpha = 0 


UIView.animateWithDuration(1, delay: 2, options: [], animations: {() -> Void in 
     self.image.alpha = 1 
     }, completion: nil) 

    UIView.animateWithDuration(1, delay: 3, options: [], animations: {() -> Void in 
     self.image.alpha = 0 
     }, completion: nil) 

Я использую UIImages для анимации.

ответ

0

Простое соединение UIView.animateWithDuration анимация в том же объеме, что и проблема. Путь для достижения эффекта вы описали бы вызвать вторую анимацию в завершение блока первой, как и

self.image.alpha = 0 

UIView.animateWithDuration(1, delay: 2, options: [], animations: {() -> Void in 
    self.image.alpha = 1 
    }, completion: { finished in 

     UIView.animateWithDuration(1, delay: 0, options: [], animations: {() -> Void in 
     self.image.alpha = 0 
     }, completion: nil) 
}) 

Edit: это не имеет прямого отношения к проблеме вы описываете, но просто добавьте немного общих советов, основанных на формулировке вашего вопроса: обычно лучше начинать начальную анимацию по времени в методах viewWillAppear или viewDidAppear вашего контроллера. viewDidLoad Получение вызова не обязательно означает, что представление отображается сразу, что может привести к отключению вашего времени (особенно если ваше представление становится более сложным в отношении памяти и ресурсов).

1

Попробуйте это:

UIView.animateWithDuration(1, delay: 2, options: [], animations: {() -> Void in 
    self.image.alpha = 1 
    }, completion: { 
     UIView.animateWithDuration(1, delay: 3, options: [], animations: {() -> Void in 
      self.image.alpha = 0 
     }, completion: nil) 
}) 

Простое правило: Подождите одну анимацию, чтобы завершить, прежде чем начать с другого. Вы выполняли их по спине, что приводило к первому, ни в коем случае не к состоянию.

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