Статьи

Совет по iOS SDK: работа с анимацией

Анимации iOS SDK позволяют оживить ваши приложения привлекательными визуальными эффектами и переходами. В iOS SDK анимации часто используются для изменения положения видов, изменения их размеров, удаления или добавления представлений из иерархий представлений, а также для полного скрытия представлений. Читайте дальше, чтобы узнать, как эти эффекты достигаются!

Чтобы создать анимацию с помощью iOS SDK, вам не нужно писать какой-либо пользовательский код для рисования. Все, что вам нужно сделать, это запустить анимацию несколькими простыми вызовами, а платформа Core Animation сделает тяжелую работу. С помощью этого фреймворка вы можете создать анимацию всего за несколько строк кода, и это хорошо для нас, как для ленивых разработчиков!

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

  • Рамка
  • оценки
  • центр
  • преобразование
  • альфа
  • фоновый цвет
  • contentStretch

Если ваше приложение работает в iOS 3.2 и более ранних beginAnimations:context: , вы должны использовать методы класса beginAnimations:context: и commitAnimations класса UIView для определения ваших блоков анимации. Этот метод я буду использовать в этом кратком совете, потому что он работает на всех версиях iOS.

Чтобы начать анимационный блок, вы будете использовать [UIView beginAnimations:(NSString *) context:(void *)]; , После написания кода для настройки анимации (т.е. изменения свойств UIView) вы завершите блок анимации с помощью [UIView commitAnimations]; ,

Вы можете настроить блок анимации с помощью следующих методов класса UIView:

  • дата начала анимации
  • задержка анимации
  • продолжительность анимации
  • кривая анимации
  • количество повторений анимации
  • анимация повтора автореверсов
  • делегат анимации
  • анимация запустит селектор
  • анимация остановила селектор
  • анимация существ из текущего состояния

С помощью кода начала и коммита выше вы можете создать анимацию. Чтобы увидеть это на практике, давайте рассмотрим пример:

1
2
3
4
5
6
7
[UIView beginAnimations:@»My First Animation» context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationDelay:2.0];
 
self.view.backgroundColor = [UIColor redColor];
 
[UIView commitAnimations];

Как видите, я начал анимационный блок с [UIView beginAnimations:(NSString *) context:(void *)]; и назвал это «Моя первая анимация». После этого я установил длительность на 1 секунду, а задержку на 2 секунды, чтобы анимация начиналась через две секунды, и для ее завершения потребуется 1 секунда. С помощью этой анимации я анимирую цвет фона представления в красный цвет. Если цвет фона представления уже был красным, вы не увидите анимацию, но она все равно будет анимирована. Наконец я заканчиваю свой блок анимации с помощью [UIView commitAnimations]; ,

Вот пример анимации, где мы вращаемся в представлении:

1
2
3
4
5
6
7
8
[UIView beginAnimations:@»Rotate» context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(rotateBack)];
 
theView.transform = CGAffineTransformMakeRotation(M_PI);
 
[UIView commitAnimations];

Настройка этого блока анимации выглядит так же, как и предыдущий, только на этот раз я использовал делегат анимации и использовал свойство transform. Если вы хотите использовать метод селектора did stop , вам нужно установить для делегата значение self . Итак, если эта анимация завершена, будет вызван метод rotateBack . С помощью свойства transform вы можете масштабировать, поворачивать или переводить вид. Преобразование всегда будет в 2D. Как видите, для угла поворота я использовал M_PI. По умолчанию Objective-C работает с радианами вместо градусов. 360 градусов — это то же самое, что и 2∏, поэтому вид повернется на 180 градусов.

01
02
03
04
05
06
07
08
09
10
— (void) rotateBack
{
    [UIView beginAnimations:@»Rotate back» context:nil];
 
    [UIView setAnimationDuration:1.0];
 
    theView.transform = CGAffineTransformIdentity;
 
    [UIView commitAnimations];
}

Это метод, который будет вызываться после завершения анимации поворота. В этом анимационном блоке мы поворачиваем вид назад к его первоначальному месту. Мы делаем это с CGAffineTransformIdentity функции CGAffineTransformIdentity . Это отменит поворотное преобразование.

Хотите узнать больше? Вы можете увидеть еще несколько примеров анимации в прилагаемом исходном коде.

Я надеялся, что вам понравился этот быстрый SDK для iOS по анимации! Пожалуйста, дайте мне знать ваш отзыв, оставив комментарий ниже. Вы также можете предложить идеи для дополнительных учебных пособий для нас в будущем!