• setAnimationDelay: — задает задержку для анимации (в секундах) перед ее началом. Например, если это значение установлено в 3.0f, то анимация будет начинаться через 3 секунды после выполнения этого метода.
• setAnimationRepeatCount: — указывает количество прогонов анимации, которые должны быть выполнены в блоке кода.
Теперь, когда нам известны наиболее полезные методы класса UIView, помогающие анимировать виды, рассмотрим другую анимацию. В этом примере кода я создам два вида с изображениями (в каждом из них будет показано одно и то же изображение), и они появятся на экране в одно и то же время, одно в левом верхнем углу, другое — в правом нижнем (рис. 17.35).
Рис. 17.35. Исходное положение, с которого начинается анимация
В этом примере изображение из верхнего левого угла будет называться image 1, а из правого нижнего — image 2.
Как уже упоминалось, в этом коде мы собираемся создать два изображения, в верхнем левом и правом нижнем углах. Далее image 1 станет двигаться по направлению к image 2 и будет так перемещаться на протяжении 3 секунд, а потом медленно исчезнет. Когда image 1 начнет движение, станет двигаться и image 2 — оно пойдет в верхний левый угол экрана, где изначально находилось изображение image 1. Опять же мы хотим, чтобы анимация изображения image 2 завершилась за 3 секунды и оно медленно исчезло. Когда вы запустите этот код на устройстве или симуляторе iOS, такая анимация будет выглядеть
1. В верхней части. m-файла нашего контроллера вида определим два вида с изображениями:
@interface ViewController ()
@property (nonatomic, strong) UIImageView *xcodeImageView1;
@property (nonatomic, strong) UIImageView *xcodeImageView2;
@end
@implementation ViewController
2. В методе экземпляра viewDidLoad, относящемся к контроллеру вашего вида, инициализируем оба этих вида с изображениями и помещаем их в основной вид:
— (CGRect) bottomRightRect{
CGRect endRect;
endRect.origin.x = self.view.bounds.size.width — 100;
endRect.origin.y = self.view.bounds.size.height — 100;
endRect.size = CGSizeMake(100.0f, 100.0f);
return endRect;
}
— (void) viewDidLoad{
[super viewDidLoad];
UIImage *xcodeImage = [UIImage imageNamed:@"Xcode.png"];
self.xcodeImageView1 = [[UIImageView alloc]
initWithImage: xcodeImage];
self.xcodeImageView2 = [[UIImageView alloc]
initWithImage: xcodeImage];
/* Просто задаем размеры так, чтобы изображения уменьшились. */
[xcodeImageView1 setFrame: CGRectMake(0.0f,
0.0f,
100.0f,
100.0f)];
[self.xcodeImageView2 setFrame: [self bottomRightRect]];
self.view.backgroundColor = [UIColor whiteColor];
[self.view addSubview: self.xcodeImageView1];
[self.view addSubview: self.xcodeImageView2];
}
3. Реализуем для нашего контроллера вида метод экземпляра, который называется startTopLeftImageViewAnimation. Как понятно из названия[12], данный метод будет выполнять анимацию для изображения image 1, перемещая его из верхнего левого угла экрана в нижний правый, а изображение тем временем будет медленно исчезать. Такое исчезновение достигается установкой альфа-значения в 0:
— (void) startTopLeftImageViewAnimation{
/* Начинаем с верхнего левого угла. */
[self.xcodeImageView1 setFrame: CGRectMake(0.0f,
0.0f,
100.0f,
100.0f)];
[self.xcodeImageView1 setAlpha:1.0f];
[UIView beginAnimations:@"xcodeImageView1Animation"
context:(__bridge void *)self.xcodeImageView1];
/* Трехсекундная анимация */
[UIView setAnimationDuration:3.0f];
/* Получаем анимационные делегаты. */
[UIView setAnimationDelegate: self];