Как сделать приложение полностью работать правильно для AutoRotation в iOS 6?

StackOverflow https://stackoverflow.com//questions/12662240

Вопрос

в iOS6, генеракодицетагкод устарел.Я пытался использовать shouldAutorotateToInterfaceOrientation и supportedInterfaceOrientations, чтобы сделать приложение, работающее правильно для автозависимости, но не удалось.

Этот контроль контроллера я не хочу вращаться, но это не работает.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

-(BOOL)shouldAutorotate
{
    return NO;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}
.

Есть идеи? Спасибо за любую помощь заранее!

Это было полезно?

Решение

понять это.

1) Подклассный UinavigateController (верхний контроль контроля иерархии будет контролировать ориентацию.) сделал это как self.window.rootviewController.

- (BOOL)shouldAutorotate
{
    return self.topViewController.shouldAutorotate;
}
- (NSUInteger)supportedInterfaceOrientations
{
    return self.topViewController.supportedInterfaceOrientations;
}
.

2) Если вы не хотите, чтобы контроллер просмотра вращается

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

-(BOOL)shouldAutorotate
{
    return NO;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}
.

3) Если вы хотите, чтобы он мог вращаться

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

-(BOOL)shouldAutorotate
{
    return YES;
}
.

BTW, в соответствии с вашими потребностями, другой связанный метод:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
     return UIInterfaceOrientationMaskPortrait;
}
.

Другие советы

Если вы используете контроллер вкладок, вместо контроллера навигации в качестве корневого контроллера, вам понадобится аналогично подкласс UITABBACCONTROLLER.

Также синтаксис будет другим.Я использовал следующее с успехом.Затем я использовал приведенные выше примеры с успехом на контроллерах просмотра, которые я хотел переопределить.В моем случае я хотел, чтобы главный экран не вращался, но у меня был экран FAQ с фильмами, которые я естественным образом хотел включить вид на ландшафту.Работал отлично!Просто обратите внимание на изменение синтаксиса в Self.ModalViewController (вы получите предупреждение компилятора, если вы пытаетесь использовать синтаксис для контроллера навигации.) Надеюсь, это поможет!

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (BOOL)shouldAutorotate
{
    return self.modalViewController.shouldAutorotate;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return self.modalViewController.supportedInterfaceOrientations;
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top