Я создаю приложение с несколькими UIViewController, управляемыми RootViewController. В настоящее время в списке для приложения по умолчанию используется LandscapeRight.
Допустим, у меня есть следующие файлы, которые можно загрузить в RootViewController:
- IntroView (ТОЛЬКО в альбомной ориентации справа)
- Пейзаж (ТОЛЬКО Пейзаж справа)
- PortraitView (ТОЛЬКО портретная ориентация)
Я также добавил в shouldAutorotateToInterfaceOrientation RootViewController следующее:
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if ([currentClass class] == PortraitView.class) {
return (interfaceOrientation == UIInterfaceOrientationPortrait);
} else {
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
}
так что все в порядке, пока я не загрузлю PortraitView, а в viewWillAppear я добавлю следующее (аналогично эта ветка
if (self.interfaceOrientation == UIInterfaceOrientationPortrait) { //UIInterfaceOrientationLandscapeRight) {
self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(-90));
self.view.bounds = CGRectMake(0.0, 0.0, 320, 480);
self.view.center = CGPointMake(240.0f, 160.0f);
}
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait];
Это приводит к правильной загрузке в PortraitView, но теперь моя проблема в том, что в моем PortraitView у меня есть 2 подпредставления, между которыми я хотел бы переключаться, но поскольку я повернул свое представление, UIViewAnimationTransitionFlipFromLeft фактически заставляет его переворачиваться сверху вниз, а не слева направо. Я не могу понять, как сказать PortraitView, что он находится в портрете.
Когда я проверяю [[UIDevice currentDevice] ориентацию]; он говорит мне, что это в пейзаже. Когда я пытаюсь использовать shouldAutorotateToInterfaceOrientation и устанавливаю только портрет, он затем поворачивает мой вид, поэтому он больше не является правильным.
Надеюсь, это имеет смысл! Целый день занимаюсь этим вопросом.
Спасибо!