Como fazer aplicativo totalmente de funcionar corretamente para a rotação automática no iOS 6?
-
11-12-2019 - |
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!
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;
}