Особенности анимации UIView

На уровне UIView можно анимировать три основных параметра:

  • frame
  • transform (перемещение, поворот и масштабирование)
  • alpha (прозрачность)

Анимация UIView выполняется методом animationWithDuration:

Аргументами метода выступают два значения времени в секундах — первое сколько длится анимация, второе через сколько начать анимацию (в данном примере длительность 2 сек, начинаем без задержек), а также два замыкания. В замыкании animations мы устанавливаем параметры которые хотим изменить (тут начальное значение задано в первой строке
someView.alpha = 1.0, а конечное значение someView.alpha = 0.0 уже в замыкании). В замыкании completion — происходит проверка на завершенность анимации. Она может быть не завершена, если в течение двух секунд, которые длится анимация, что-то (например другая анимация) попыталось изменить свойство alpha  у someView. В этом случае анимация считается незавершенной и параметр $0 будет  false и соответственно не выполнится удаление someView из иерархии superview

Пятая строка напечатает someView.alpha = 0.0. Очень важно понимать, что изменения свойств происходят сразу же, незамедлительно, хотя анимация и длится в течение некоторого времени. Анимация просто показывает изменение, растянутое во времени, хотя на самом деле уже все изменения произошли.

Только BeginFromCurrentState, если будет запущена во время выполнения другой анимации, возьмет то значение параметра, которое в данный момент на экране.

Когда нужно сделать полное изменение view мы не ограничены такими специфическими свойствами, как alpha​, frame​ и  transform. Методом  класса UIView.transitionWithView: мы можем:

Т.е.

в замыкании animations мы запускам методы перерисовки UIView

И наконец анимация изменений в иерархии UIView. Если нужно анимировать удаление/добавление/скрытие/появление subviews то нужно использовать еще один метод класса UIView:

Тут нет замыкания анимации, потому что изменения коснутся только иерархии views. UIViewAnimationOptionsTransitionCrossDissolve​если вы хотите использовать свойство hidden. В противном случае он действительно убирает fromView ​из иерархии views​ и добавляет toView​.

Опубликовано в Iron ribbon, Элементы UI Метки: , , ,
Один комментарий на “Особенности анимации UIView
  1. Алекс:

    Спасибо за полезную информацию!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*