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

Решение

Решение

Создайте аффинное преобразование вращения, для анимирования вращения пользуйтесь методами класса UIView.

Перед дальнейшей работой настоятельно рекомендую перечитать раздел 17.14.

Чтобы вращать вид, анимируя его при этом, нужно применить к нему преобразование вращения в то время, как в коде выполняется анимационный блок (см. раздел 17.12). Рассмотрим пример кода, который прояснит это. Допустим, у нас есть рисунок Xcode.png (см. рис. 17.9) и мы хотим отобразить его в центре экрана. После того как картинка появится на экране, мы повернем ее на 90° за 5 секунд, а потом повернем обратно, поставив в исходное положение. Итак, когда вид с изображением появится на экране, повернем этот вид на 90° по часовой стрелке:

— (void) viewDidAppear:(BOOL)paramAnimated{
[super viewDidAppear: paramAnimated];
self.xcodeImageView.center = self.view.center;
/* Начинаем анимацию. */
[UIView beginAnimations:@"clockwiseAnimation"
context: NULL];
/* Анимация будет длиться 5 секунд. */
[UIView setAnimationDuration:5.0f];
[UIView setAnimationDelegate: self];
[UIView setAnimationDidStopSelector:
@selector(clockwiseRotationStopped: finished: context:)];
/* Поворачиваем вид с изображением на 90°. */
self.xcodeImageView.transform =
CGAffineTransformMakeRotation((90.0f * M_PI) / 180.0f);
/* Выполняем анимацию. */
[UIView commitAnimations];
}

Мы решили, что селектор clockwiseRotationStopped: finished: context: должен вызываться в тот момент, когда заканчивается анимация вращения по часовой стрелке. В этом методе мы будем вращать вид с изображением против часовой стрелки, обратно в положение, соответствующее 0° (то есть исходное). На это тоже уйдет 5 секунд.

— (void)clockwiseRotationStopped:(NSString *)paramAnimationID
finished:(NSNumber *)paramFinished
context:(void *)paramContext{
[UIView beginAnimations:@"counterclockwiseAnimation"
context: NULL];
/* 5 секунд */
[UIView setAnimationDuration:5.0f];
/* Возврат в исходное положение */
self.xcodeImageView.transform = CGAffineTransformIdentity;
[UIView commitAnimations];
}

Как было показано в разделах 17.14 и 17.15, а также в этом разделе, существует много способов анимировать виды (прямые или непрямые подклассы UIView). При выполнении анимации можно изменять немало свойств. Будьте креативны и экспериментируйте с другими свойствами UIView, о которых раньше, возможно, не знали. Не помешает также еще раз пересмотреть документацию по UIView в органайзере Xcode.

Оглавление книги

Оглавление статьи/книги

Генерация: 0.054. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз