Com o lançamento do iPad pela Apple, e a necessidade de adaptar os aplicativos existentes para o iPad, os desenvolvedores encontraram alguns desafios que antes não eram percebidos quando desenvolvendo para iPhone ou iPod Touch.
Todos os devices da apple possuem o acelerômetro e através dele nossa iteração com os dispositivos e aplicativos mudou completamente, saindo de algo “estático” para aplicativos que reagem conforme você posiciona o aparelho.
Essa funcionalidade já quase não é mais percebida nos aplicativos para iPhone, pois quase todos os aplicativos estão preparados para a visualização em Landscape e Portrait. Porém, devido ao tamanho da tela desse device, não existe grande diferença nessas visualizações.
Arrisco em dizer que grande parte das vezes em que rotacionamos o iPhone para Landscape é para ter uma maior área de visualização ou melhor acesso ao teclado para digitar textos mais longos.
Porém, com o iPad essa funcionalidade foi renovada. Alguns fatores como tamanho da tela influenciaram nessa mudança, afinal, com tanto espaço as informações podem ser melhores dispostas para o usuário.
Essa mudança pode ser percebida em grande parte dos aplicativos existentes no iPad, e sua disposição pode mudar da acordo com a necessidade.
Percebam, por exemplo, que para o aplicativo Settings não existe diferenciação entre Portrait e Landscape:
Já, outros aplicativos como Mail e YouTube possuem visualizações bem diferentes de acordo com a orienteção do device:
Mas, e quando estamos desenvolvendo aplicativos mais simples, que não irão possuir tantas formas de visualização, ou mesmo quando estamos aprendendo a trabalhar com esse controle de visualização, como podemos permitir ou bloquear que o aplicativo mude sua visualização?
Quando não estamos criando controles avançados de tratamento dessas visualizações, podemos ter alguns resultados indesejáveis quando o iPad é rotacionado, e toda a UI ser afetada, impactando a UX para o usuário.
Portanto, uma forma simples de permitir, por exemplo, que a aplicação não mude a orientação para Landscape é através do controller da view.
No controller podemos encontrar o método
|
1
|
- (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation
|
Esse método sempre retorna YES, o que significa que ele sempre rotaciona a view de acordo com a orientação.
Podemos permitir quatro tipos de orientação:
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
Cada orientação segue o posicionamento do device:
Então, caso nossa view deva responder somente ao modo Portrait e LandscapeLeft, devemos definir o método como abaixo:
|
1
2 3 4 5 6 7 |
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation==UIInterfaceOrientationPortrait || interfaceOrientation==UIInterfaceOrientationLandscapeLeft); } |
Qualquer combinação é válida, e caso todas sejam permitidas, devemos manter o método inalterado, conforme abaixo:
|
1
2 3 4 5 |
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES; } |
Mais detalhes:
O screencast abaixo demostra a criação de um aplicativo simples, com uma View, e como tratar a InterfaceOrientation com mais detalhes. Ao final do Screencast você deverá conseguir alterar os modos de rotação da forma que desejar, e assim aplicar o conceito em outras aplicações.
O código fonte gerado através do screencast pode ser baixado através do link: OrientationTest(zip)
Deixe seu comentário ou dúvidas.
Artur Fabri
@arturfabri



















