Я создаю приложение с несколькими контроллерами UIViewController, управляемыми RootViewController.В настоящее время в plist приложение по умолчанию имеет значение LandscapeRight.
Допустим, у меня есть следующие файлы, которые можно загрузить в RootViewController:
- IntroView (ТОЛЬКО Пейзаж справа)
- LandscapeView (ТОЛЬКО в альбомной ориентации)
- PortraitView (ТОЛЬКО в вертикальной ориентации)
Я также добавил в RootViewController mustAutorotateToInterfaceOrientation следующее:
-(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, что это в Portrait.
Когда я проверяю [[UIDevIce CurrentDevice] ориентация];это говорит мне его в Пейзаж.Когда я попытаюсь использовать shouldAutorotateToInterfaceOrientation и установить его только в «Портрет», он будет вращать мое представление, так что оно больше не будет правильным.
Надеюсь, это имеет смысл!Просматривал этот вопрос весь день.
Спасибо!