Problemas de compatibilidade do tamanho de telas Iphone 4 e Iphone 6 plus

Olá colegas, tenho uma aplicação IOS que já foi desenvolvida (Objctive-C) e está em processo de homologação pela App Store. Estou com um problema, a funcionalidade é uma consulta com 3 campos sendo que os parâmetros são selecionados através de um pickerview que fica no rodapé da aplicação. Para todas as versões dos aparelhos (Iphone5,5s 6 e 6 plus) funciona perfeitamente, porém com exceção da versão 4 e 4s do Iphone o pickerview fica escondido em virtude do tamanho da tela. O mesmo acontece com a primeira versão para ipad. Sendo assim o app é rejeitado na homologação em virtude deste desempenho. Fiz vários testes tentando trabalhar com as “contraints” de alinhamento consigo fazer funcionar na versão 4 do Iphone porém para as outras versões o picker view fica no meio da tela deixando o layout horrível, e se adaptar para para as outras versões com a tela grande o picker fica escondido na versão “4” e “4s”. Ao utilizar o “ScrollView” consigo resolver em partes porém o layout não fica muito esquisito outras coisas param de funcionar com o ScrollView como a ampulheta “UIActivityIndicatorView” não é compatível com o scroll. Como faço para resolver este problema? Outro problema é que a aplicação não foi desenvolvida de forma dinâmica, (Criando os objetos via código) os objetos foram adicionados via arquivo .xib. Os exemplos que vejo no forum (StackOverflow) são para exemplos totalmente dinâmicos com código de baixo nível e que não funcionam para meu caso.

Como faço para saber o tamanho da tela antes de lançar a aplicação e redimensionar a posição e tamanho dos objetos para evitar este problema?

Grato

Rodrigo

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/WorkingwithConstraintsinInterfaceBuidler.html

Dá uma olhada no meu post no blog da Caelum onde falo sobre AutoLayout.

Uma ideia para habilitar o ScrollView é usar uma lib chamada TPKeyboardAvoiding.

1 curtida

Olá pfk66, Então eu já havia tentado trabalhar com as contraints mas não funciona neste caso porque o layout do iphone 4 não é tão retangular quanto do Iphone 5 em diante. As contraints não resolvem neste caso. Mas de qualquer forma agradeço pela resposta.

Olá Felipe muito obrigado pela resposta vou estudar sobre o TPKeyboardAvoidingScrollView, Muito bom o seu post do AutoLayout, estou testando essas possibilidades. Qualquer dúvida eu retorno, mas obrigado pela resposta ajudou bastante.

você vai ter que criar as constraint via código, você fez isso?

Só assim pra criar constraints dinamicamente baseado no modelo do aparelho. Não tem como saber se o aparelho é iPhone 4 em tempo de design no interface builder.

ps: com relação a não ter sido desenvolvido de forma dinâmica, de fato, auto layout foi feito pra não ter que pensar termos de coordenadas e modelos de aparelhos. Algumas pessoas preferem trabalhar com constraints no código, as vezes é necessário, como no seu caso, mas sempre que possível eu prefiro não ter constraints no código.

Criando constraints via código:
https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/ProgrammaticallyCreatingConstraints.html#//apple_ref/doc/uid/TP40010853-CH16-SW1