[UIView setAnimationDidStopSelector:
@selector(imageViewDidStop: finished: context:)];
/* Заканчиваем в нижнем правом углу. */
[self.xcodeImageView1 setFrame: CGRectMake(220.0f,
350.0f,
100.0f,
100.0f)];
[self.xcodeImageView1 setAlpha:0.0f];
[UIView commitAnimations];
}
4. Когда анимация какого-либо из этих видов остановится, мы удалим данный вид из иерархии родительских видов, так как больше в нем не нуждаемся. Как было показано в методе startTopLeftImageViewAnimation, мы передали селектор делегата методу класса setAnimationDidStopSelector:, относящемуся к классу UIView. Этот селектор будет вызываться после окончания анимации image 1 (как было показано ранее) и image 2 (как мы вскоре увидим). Вот реализация этого селектора делегата:
— (void)imageViewDidStop:(NSString *)paramAnimationID
finished:(NSNumber *)paramFinished
context:(void *)paramContext{
UIImageView *contextImageView = (__bridge UIImageView *)paramContext;
[contextImageView removeFromSuperview];
}
5. Кроме того, нам понадобится метод для анимирования image 2. Между написанием анимационных методов для image 2 и image 1 есть небольшая разница. Я хочу начать анимацию image 2,
— (void) startBottomRightViewAnimationAfterDelay:(CGFloat)paramDelay{
/* Начинаем с нижнего правого угла. */
[self.xcodeImageView2 setFrame: [self bottomRightRect]];
[self.xcodeImageView2 setAlpha:1.0f];
[UIView beginAnimations:@"xcodeImageView2Animation"
context:(__bridge void *)self.xcodeImageView2];
/* Трехсекундная анимация */
[UIView setAnimationDuration:3.0f];
[UIView setAnimationDelay: paramDelay];
/* Получаем анимационные делегаты. */
[UIView setAnimationDelegate: self];
[UIView setAnimationDidStopSelector:
@selector(imageViewDidStop: finished: context:)];
/* Заканчиваем в верхнем левом углу. */
[self.xcodeImageView2 setFrame: CGRectMake(0.0f,
0.0f,
100.0f,
100.0f)];
[self.xcodeImageView2 setAlpha:0.0f];
[UIView commitAnimations];
}
6. И последнее, но немаловажное замечание. Как только вид отобразится, мы должны запустить методы startTopLeftImageViewAnimation и startBottomRightViewAnimationAfterDelay::
— (void) viewDidAppear:(BOOL)paramAnimated{
[super viewDidAppear: paramAnimated];
[self startTopLeftImageViewAnimation];
[self startBottomRightViewAnimationAfterDelay:2.0f];
}
17.15. Анимирование и масштабирование видов
Постановка задачи
Требуется возможность анимировать виды и масштабировать их в сторону увеличения или уменьшения.
Решение
Создайте для вида аффинное преобразование и используйте анимационные методы UIView для сопровождения масштабирования анимацией.
Обсуждение