English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Detalhamento da solução do problema de rotação da tela no Android usando Runtime (Recomendado)

Introdução

Talvez você encontre problemas de rotação de tela com frequência no desenvolvimento de aplicativos iOS, por exemplo, desejar que determinadas páginas rolem em diferentes direções de tela, mas devido aos métodos fornecidos pelo sistema serem métodos globais do controlador de navegação, não é possível alcançar essa necessidade de maneira aleatória. A solução geral é herdar UINavrgationViewController, reescrever os métodos dessa classe, o que, embora também resolva o problema, gera pelo menos dois arquivos desnecessários e muita código, o que claramente não é o que queremos. Abaixo, usaremos um método mais básico para resolver esse problema.

Princípio básico

Mude dinamicamente o método global UINavrgationViewController, substituindo os métodos supportedInterfaceOrientations, shouldAutorotate e os métodos do objeto controlador de navegação que escrevemos.

Preparativos

Configuração de suporte a direções

Implementação do código

Escreva o método abaixo no método viewDidLoad da classe pai de todos os controladores de vista, para configurar a direção de rotação da tela.

//Obter o método de suporte de rotação do controlador de vista atual
Method selfMtihod = class_getInstanceMethod([self class], @selector(shouldAutorotate));
//Obter o método de suporte de rotação do controlador de navegação atual
Method navr = class_getInstanceMethod([self.navigationController class], @selector(shouldAutorotate));
//Trocar métodos
method_exchangeImplementations(selfMethod, navr);
//Os seguintes métodos são semelhantes
Método selfOrientation = class_getInstanceMethod([self class], @selector(supportedInterfaceOrientations));
Método navrOrientation = class_getInstanceMethod([self.navigationController class], @selector(supportedInterfaceOrientations));
method_exchangeImplementations(selfOrientation, navrOrientation);

Método de uso

Reescreva supportedInterfaceOrientations, shouldAutorotate no pai acima para representar os atributos relacionados à rotação da tela por padrão.

Em cada subclasse subsequente do controlador que tenta controlar, você pode reescrever supportedInterfaceOrientations, shouldAutorotate para completar o requisito de orientação do visual controller.

Aqui está uma explicação detalhada do método do editor para resolver o problema de rotação de tela do Runtime, esperamos que isso ajude a todos. Se você tiver alguma dúvida, por favor, deixe um comentário, o editor responderá a tempo. Agradecemos também o apoio ao site de tutorial de clamor!

Declaração: O conteúdo deste artigo é extraído da internet, pertence ao respectivo proprietário, o conteúdo é contribuído e carregado voluntariamente pelos usuários da internet, este site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidade legal relevante. Se você encontrar conteúdo suspeito de violação de direitos autorais, por favor, envie um e-mail para: notice#w.3Aviso: O conteúdo deste artigo foi extraído da internet, pertence ao respectivo proprietário, o conteúdo foi contribuído e carregado voluntariamente pelos usuários da internet, este site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidade legal relevante. Se você encontrar conteúdo suspeito de violação de direitos autorais, por favor, envie um e-mail para: notice#w, fornecendo provas relevantes. Uma vez confirmada, o conteúdo suspeito será imediatamente removido deste site.

Você também pode gostar