Я пытаюсь сделать переход между двумя представлениями с помощью 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