UIViewAnimationTransitionCurlUp справа налево в альбомной (как левой, так и правой) ориентации - PullRequest
1 голос
/ 01 ноября 2011

Я пытаюсь сделать переход между двумя представлениями с помощью UIViewAnimationTransitionCurlUp. Мое приложение работает в альбомной (слева и справа), и мне нужен переход справа налево. UIViewAnimationTransitionCurlUp работает снизу вверх (а не справа налево, как я хочу). Моя первая версия была:

self.oneView = [[[UIImageView alloc] initWithFrame:frame] autorelease];
self.twoView = [[[UIImageView alloc] initWithFrame:frame] autorelease];
[self.view addSubview:self.oneView];

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
[self.oneView removeFromSuperview];
[self.view addSubview:twoView];
[UIView commitAnimations];

Работало в альбомной ориентации с кнопкой «Домой» справа (переход осуществлялся справа налево, начинался с правого верхнего угла по желанию). Но когда устройство поворачивалось к кнопке «Домой» слева, эффект скручивания был вверх ногами: слева направо начиналось с левого нижнего угла). Казалось, что анимация не знала об ориентации устройства. Я изменил код, чтобы использовать промежуточное представление контейнера (между self.view и

self.oneView/twoView):
self.containerView = [[[UIView alloc] initWithFrame:frame] autorelease];
self.oneView = [[[UIImageView alloc] initWithFrame:frame] autorelease];

self.twoView = [[[UIImageView alloc] initWithFrame:frame] autorelease];
[self.view addSubview:self.containerView];
[self.containerView addSubview:self.oneView]

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.containerView cache:YES];
[self.oneView removeFromSuperview];
[self.containerView addSubview:twoView];
[UIView commitAnimations];

Теперь он знал о повороте устройства и работал правильно для обеих альбомных ориентаций. Но это работало снизу вверх (начиналось с правого нижнего угла), как описано в документации. Но я хочу, чтобы это работало справа налево. Я также пытался использовать свойство transform представлений, таких как:

self.containerView.transform = CGAffineTransformMakeRotation(-M_PI_2);
self.oneView.transform = CGAffineTransformMakeRotation(M_PI_2);

Это не помогло. Итак, вопрос: Как использовать переход UIViewAnimationTransitionCurlUp в ландшафтном режиме (как слева, так и справа) для перехода между видами справа налево? Спасибо за любую помощь! Alex

1 Ответ

0 голосов
/ 01 ноября 2011

Вы пробовали использовать UIViewAnimationTransitionCurlDown?Это обратное направление UIViewAnimationTransitionCurlUp.

...