2015-08-20 7 views
0

При нажатии кнопки на кнопке UpInside выполняется серия кода (все данные связаны, ни один из основных функций в модуле не изменяет объект представления), а последнее, что делает код, вызывает функцию анимации, которая Я вставил ниже. Проблема в том, что анимация не похожа на нее.Текстовая анимация UIButton не анимируется

Желаемая анимация:

  1. footerImg должны исчезнуть из
  2. Текст footerBar должны исчезнуть в
  3. Текст footerBar должен исчезать
  4. footerImg должны исчезнуть назад в

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

не Реальная анимация видел в тренажере:

-footerImg никогда даже не виден -footerBar текст появляется сразу после запуска сливают, без анимации -footerBar текст исчезает -footerImg выцветает

footerBar является UIButton

-Простое состояние перед тем, как действие когда-либо начинается, заключается в том, что кнопка пуста d ясно (невидимо для пользователя)

-При это имеет значение, это не кнопка, вызвавший функцию

-обладает ясный фон, поэтому его текст должен быть единственным анимировать в/из

footerImg является UIImageView

-Просто значка изображения, ничего особенного

func animateFeedback() { 
    UIView.animateWithDuration(0.25, delay: 0.0, usingSpringWithDamping: 1.0, initialSpringVelocity: 0, options: nil, animations: { 
      self.footerImg.alpha = 0 
      self.footerBar.alpha = 0 

    }, 
     completion: { finished in 
      self.footerBar.setTitle("Item added", forState: UIControlState.Normal) 
     } 
    ) 

    UIView.animateWithDuration(1.5, delay: 0.5, options: nil, animations: { 
      self.footerBar.alpha = 1 
     } 
     , completion: nil 
    ) 
    UIView.animateWithDuration(0.75, delay: 1.25, options: nil, animations: { 
      self.footerBar.alpha = 0 
     } 
     , completion: { finished in 
      self.footerBar.setTitle("", forState: UIControlState.Normal) 
     } 
    ) 
    UIView.animateWithDuration(0.25, delay: 1.5, options: nil, animations: { 
      self.footerImg.alpha = 1 
     } 
     , completion: nil 
    ) 
} 

ответ

1

Для анимации последовательности вы должны поместить анимацию в блок завершения. Например.

Текст footerBar должны исчезнуть в

Текст footerBar должен исчезать

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

 self.footerBar.alpha = 0; 

     UIView.animateWithDuration(1.5, delay: 0.5, options: nil, animations: { 
      self.footerBar.alpha = 1 
     } 
     , completion: { finished in 
      UIView.animateWithDuration(0.75, delay: 1.25, options: nil, animations: { 
       self.footerBar.alpha = 0 
      } 
      , completion: { finished in 
       self.footerBar.setTitle("", forState: UIControlState.Normal) 
      } 
      ) 
     } 
     ) 

И то же самое для других

+0

Работал. Если бы перед анимацией установить альфа-идентификатор нижнего колонтитула и название, то ваша вложенная методология позаботилась о том, какие другие проблемы вызывали у меня проблемы. Спасибо. –

0

комментарий все коды, что и есть в "animateFeedback()" и вставьте нижеприведенный код

UIView.animateWithDuration(1.5, delay: 0, options: nil, animations: {() -> Void in 
     self.footerImg.alpha = 0; 
     self.footerBar.setTitle("Item added", forState: UIControlState.Normal) 
     }, 
     completion: { finished in 
      UIView.animateWithDuration(1.5, delay: 0, options: nil, animations: {() -> Void in 
       self.footerImg.alpha = 1; 
       self.footerBar.setTitle("", forState: UIControlState.Normal) 
       }, 
       completion: { finished in 
       } 
      ) 
     } 
    ) 
Смежные вопросы