Como fazer aplicativo totalmente de funcionar corretamente para a rotação automática no iOS 6?

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

Pergunta

No iOS6, shouldAutorotateToInterfaceOrientation é preterido.Eu tentei usar supportedInterfaceOrientations e shouldAutorotate para fazer o aplicativo funcionar correctamente para a rotação automática, mas não conseguiu.

este ViewController eu não quero rodar, mas ele não funciona.

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

-(BOOL)shouldAutorotate
{
    return NO;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

Qualquer idéias?Obrigado por qualquer ajuda antecipadamente!

Foi útil?

Solução

Descobri.

1) uma subclasse UINavigationController (topo viewcontroller da hierarquia vai assumir o controle da orientação.) fez definido como auto.janela.rootViewController.

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

2) se você não quiser ler controlador de rotação

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

-(BOOL)shouldAutorotate
{
    return NO;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

3) se você deseja que ele seja capaz de girar

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

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

-(BOOL)shouldAutorotate
{
    return YES;
}

BTW , de Acordo com suas necessidades ,outro método :

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

Outras dicas

Se você estiver usando uma Barra de controle em vez de um Controlador de Navegação como sua raiz controlador, você precisará da mesma forma subclasse UITabBarController.

Também a sintaxe será diferente.Eu usei o seguinte com sucesso.Então, usei os exemplos acima, com sucesso, em vista de controladores eu queria substituir.No meu caso, eu queria que o ecrã principal, para não girar, mas eu tinha um FAQ Tela com os Filmes que eu, naturalmente, queria habilitar o modo de exibição de paisagem.Funcionou perfeitamente!Apenas observe a mudança de sintaxe para auto.modalViewController (você receberá um aviso do compilador se você tentar usar a sintaxe para um controlador de navegação.) Espero que isso ajude!

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

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

- (NSUInteger)supportedInterfaceOrientations
{
    return self.modalViewController.supportedInterfaceOrientations;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top