Чтение онлайн

на главную - закладки

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

Постановка задачи

Требуется анимировать смещение видов.

Решение

При смещении видов используйте анимационные методы класса UIView.

Обсуждение

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

предоставляемая нам в форме довольно аккуратного API, с которым очень удобно работать.

Работа с анимацией в UIKit начинается с вызова метода класса beginAnimations: context:, относящегося к классу UIView. Первый параметр — это опциональное имя, которое вы можете выбрать для вашей анимации, а второй — опциональный контекст, который можно получить позже для передачи анимационным методам делегатов. Вскоре мы поговорим о них обоих.

После того как вы запустите анимацию с помощью метода beginAnimations: context:, она не начнет происходить, так как для этого потребуется еще вызвать метод класса commitAnimations, относящийся к классу UIView. Вычисления, которые вы производите над объектом-видом между вызовом beginAnimations: context: и commitAnimations (в результате которых этот вид, к примеру, перемещается), будут сопровождаться анимацией только после вызова commitAnimations. Рассмотрим пример.

Как упоминалось в разделе 17.4, я включил в пакет моего приложения рисунок Xcode.png. Это ярлык Xcode, который я нашел в картинках Google (см. рис. 17.9). Теперь в моем контроллере вида (см. введение к этой главе) я хочу поместить этот рисунок в виде с изображением типа UIImageView, а потом переместить этот вид с изображением из верхнего левого угла экрана в нижний правый угол.

Вот как мы решим эту задачу.

1. Откройте. h-файл вашего контроллера вида.

2. Определите экземпляр UIImageView как свойство контроллера вида и назовите его xcodeImageView:

#import «ViewController.h»

@interface ViewController 

@property (nonatomic, strong) UIImageView *xcodeImageView;

@end

3. Когда вид загрузится, поместите изображение Xcode.png в экземпляр UIImage:

— (void) viewDidLoad{

[super viewDidLoad];

UIImage *xcodeImage = [UIImage imageNamed:@"Xcode.png"];

self.xcodeImageView = [[UIImageView alloc]

initWithImage: xcodeImage];

/* Просто задаем размеры, чтобы изображение уменьшилось. */

[self.xcodeImageView setFrame: CGRectMake(0.0f,

0.0f,

100.0f,

100.0f)];

self.view.backgroundColor = [UIColor whiteColor];

[self.view addSubview: self.xcodeImageView];

}

4. На рис. 17.33 показано, как будет выглядеть вид, когда программа запускается в симуляторе iOS.

Рис. 17.33.

Добавление вида с изображением в объект-вид

5. Теперь, когда вид появится на экране в методе экземпляра viewDidAppear: контроллера вида, приступим к исполнению анимационного блока, относящегося к виду с изображением. Эта анимация переместит изображение из исходной точки (в левом верхнем углу) в нижний правый угол. Кроме того, мы убедимся, что анимация произойдет за пятисекундный период:

— (void) viewDidAppear:(BOOL)paramAnimated{

[super viewDidAppear: paramAnimated];

/* Начинаем с верхнего левого угла. */

[self.xcodeImageView setFrame: CGRectMake(0.0f,

0.0f,

100.0f,

100.0f)];

[UIView beginAnimations:@"xcodeImageViewAnimation"

context:(__bridge void *)self.xcodeImageView];

/* Пятисекундная анимация. */

[UIView setAnimationDuration:5.0f];

/* Получаем делегаты анимации. */

[UIView setAnimationDelegate: self];

[UIView setAnimationDidStopSelector:

@selector(imageViewDidStop: finished: context:)];

/* Анимация заканчивается в нижнем правом углу. */

[self.xcodeImageView setFrame: CGRectMake(200.0f,

350.0f,

100.0f,

100.0f)];

[UIView commitAnimations];

}

6. Далее выполните реализацию метода делегата imageViewDidStop: finished: context: для контроллера вида, чтобы он вызывался UIKit по завершении анимации. Это не обязательно, так что для примера я просто зарегистрирую несколько сообщений, демонстрирующих, что метод действительно был вызван. В следующих примерах будет показано, как можно использовать метод для запуска какой-то иной активности в момент окончания анимации:

— (void)imageViewDidStop:(NSString *)paramAnimationID

finished:(NSNumber *)paramFinished

context:(void *)paramContext{

NSLog(@"Animation finished.");

NSLog(@"Animation ID = %@", paramAnimationID);

UIImageView *contextImageView = (__bridge UIImageView *)paramContext;

NSLog(@"Image View = %@", contextImageView);

Поделиться:
Популярные книги

После Кастанеды: дальнейшее исследование

Ксендзюк Алексей Петрович
Религия и эзотерика:
эзотерика
5.00
рейтинг книги
После Кастанеды: дальнейшее исследование

Золотая лихорадка

Задорнов Николай Павлович
2. Освоение Сибири и Дальнего Востока
Проза:
историческая проза
7.29
рейтинг книги
Золотая лихорадка

Дикое поле

Веденеев Василий Владимирович
Приключения:
исторические приключения
8.29
рейтинг книги
Дикое поле

Возвращенный оккультизм, или Повесть о тонкой семерке

Подводный Авессалом
Религия и эзотерика:
эзотерика
5.00
рейтинг книги
Возвращенный оккультизм, или Повесть о тонкой семерке

Философия: Учебник для вузов

Миронов Владимир Васильевич
Научно-образовательная:
философия
5.00
рейтинг книги
Философия: Учебник для вузов

Эйнштейн. Его жизнь и его Вселенная

Айзексон Уолтер
Документальная литература:
биографии и мемуары
5.50
рейтинг книги
Эйнштейн. Его жизнь и его Вселенная

ДРАКОНЬЕ ЛЕТО

Силаева Ольга Дмитриевна
5.00
рейтинг книги
ДРАКОНЬЕ ЛЕТО

Санин (сборник)

Арцыбашев Михаил Петрович
Русская классика XX века
Проза:
русская классическая проза
роман
повесть
рассказ
5.80
рейтинг книги
Санин (сборник)

Последний Паладин. Том 8

Саваровский Роман
8. Путь Паладина
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Последний Паладин. Том 8

В поисках христианской свободы

Френц Реймонд
Религия и эзотерика:
прочая религиозная литература
5.00
рейтинг книги
В поисках христианской свободы

Руководство по системной поведенченской психотерапии

Курпатов Андрей Владимирович
Научно-образовательная:
психотерапия и консультирование
5.00
рейтинг книги
Руководство по системной поведенченской психотерапии

Академия

Сай Ярослав
2. Медорфенов
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.25
рейтинг книги
Академия

Унгерн: Демон монгольских степей

Шишов Алексей Васильевич
Белое движение
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Унгерн: Демон монгольских степей

Эволюция мага

Лисина Александра
2. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эволюция мага