Pergunta

Meu aplicativo é bastante simples, mas tenho alguns problemas quando começa. Eu ajustei o info.plist para ser paisagístico, mas parece ignorar a ordem. De fato, quando o aplicativo está carregando o simulador é paisagístico, mas retorna no modo retrato.

Esta é a hierarquia dos pontos de vista e controladores:

  • MainViewController (estende o UitabBarController apenas para substituir o devedor do interior :)
    • Três uabableViewControllers estendidos como guias (também aqueles que têm a face do inteiro

Se eu meio que forçar a orientação do dispositivo para a paisagem com:

[Uidevice CurrentDevice] Setorientation: UiInterfaceRientationLandsCaperright];

Então, por um instante, o simulador pisca no modo retrato e depois é paisagístico. O problema é que, dessa maneira, as animações de rotação automática começam, o que é algo que eu não posso tolidar. Eu só quero uma aplicação fixa e paisagística.

Alguma pista? Estou esquecendo de algo?

Foi útil?

Solução

Experimente o seguinte. Não sei por que não funciona para você

1) Defina a chave da UiInterfaceRentação
Para UiInterfaceRientationlandsCaperlight em seu arquivo .plista

2) Substituir o seu método UitabBarController deve ser o método do método; A seguir, o código lida apenas com a guia zero e um, e apenas com um controlador: se você possui um controlador de navegação e deseja controlar diferentes controladores que podem estar na pilha, você deve modificar o código de acordo

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    BOOL tabZeroController = [[[self.viewControllers objectAtIndex:0] visibleViewController] isKindOfClass:[YourTabZeroTableViewController class]];

    BOOL tabOneController = [[[self.viewControllers objectAtIndex:1] visibleViewController] isKindOfClass:[YourTabOneTableViewController class]];


    if(self.selectedIndex == 0 && tabZeroController)
        return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);

    if(self.selectedIndex == 1 && tabOneController)
        return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);

    return NO;

}

2) Configuração

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

No seu delegate, o método ApplicationDidfinishlaunching () é necessário apenas para o simulador, não em um dispositivo

3) Adicione o seguinte deve ser o seguinte (método) em seus controladores

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

4) Execute o aplicativo no seu dispositivo e verifique se ele funciona corretamente usando o item do menu de hardware, gire para a esquerda e gire para a direita. Você deve ver a tela no modo de paisagem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top