iPhone: приложение только с альбомной и портретной ориентацией - PullRequest
1 голос
/ 19 ноября 2010

Я создаю приложение с несколькими контроллерами UIViewController, управляемыми RootViewController.В настоящее время в plist приложение по умолчанию имеет значение LandscapeRight.

Допустим, у меня есть следующие файлы, которые можно загрузить в RootViewController:

  1. IntroView (ТОЛЬКО Пейзаж справа)
  2. LandscapeView (ТОЛЬКО в альбомной ориентации)
  3. 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 и установить его только в «Портрет», он будет вращать мое представление, так что оно больше не будет правильным.

Надеюсь, это имеет смысл!Просматривал этот вопрос весь день.

Спасибо!

1 Ответ

0 голосов
/ 30 марта 2011

Я столкнулся с этим немного по-другому;UIViewController подкласс в ландшафтном режиме, который менялся сверху вниз, а не слева направо.

Исправление, которое работало для меня, состояло в том, чтобы добавить все мои виды в один «внутренний» видпереверните это вместо обычного UIViewController view.

    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
                           forView:[self innerView]
                             cache:YES];

, где [self innerView] - единственный потомок [self view], и все подпредставления находятся внутри него.

...