O novo monitor do iPhone 5 tem uma nova proporção e uma nova resolução (640 x 1136 pixels).
O que é necessário para desenvolver aplicativos novos ou de transição já existentes para o novo tamanho da tela?
O que devemos ter em mente para tornar os aplicativos "universais" para os monitores mais antigos e a nova proporção de tela widescreen?
Se você tiver um aplicativo criado para o iPhone 4S ou anterior, ele será executado em caixa de correio no iPhone 5.
Para adaptar seu aplicativo à nova tela mais alta, a primeira coisa a fazer é alterar a imagem de inicialização para: [email protected]. Seu tamanho deve ser 1136x640 (HxW). Sim, ter a imagem padrão no novo tamanho da tela é a chave para permitir que seu aplicativo ocupe toda a nova tela do iPhone 5 .
(Observe que a convenção de nomenclatura funciona apenas para a imagem padrão. Nomear outra imagem "[email protected]" não fará com que ela seja carregada no lugar de "[email protected]". Se você precisar carregar imagens diferentes para diferentes tamanhos de tela, você precisará fazer isso de forma programática.)
Se você tiver muita sorte, pode ser ... mas com toda a probabilidade, você terá que dar mais alguns passos.
No caso extremo (quando nenhuma das opções acima for suficiente), projete os dois Xibs e carregue o apropriado no controlador de exibição.
Para detectar o tamanho da tela:
fonte
A única coisa realmente necessária é adicionar uma imagem de inicialização denominada "[email protected]" aos recursos do aplicativo e, em geral, se você tiver sorte, o aplicativo funcionará corretamente.
Caso o aplicativo não lide com eventos de toque, verifique se a janela principal tem o tamanho adequado. A solução alternativa é definir o quadro apropriado:
Há outros problemas não relacionados ao tamanho da tela ao migrar para o iOS 6. Leia as Notas da versão do iOS 6.0 para obter detalhes.
fonte
Às vezes (para aplicativos pré-storyboard), se o layout for suficientemente diferente, vale a pena especificar um xib diferente de acordo com o dispositivo (consulte esta pergunta - você precisará modificar o código para lidar com o iPhone 5) no viewController init, já que nenhuma quantidade de ajustes nas máscaras de redimensionamento automático funcionará se você precisar de gráficos diferentes.
Isso é útil para aplicativos direcionados para versões mais antigas do iOS.
fonte
Aqui você encontra um bom tutorial (para o MonoTouch, mas também pode usar as informações para projetos que não são do MonoTouch):
http://redth.info/get-your-monotouch-apps-ready-for-iphone-5 -ios-6-hoje /
Crie uma nova imagem para a tela inicial / inicial ( 640 x 1136 pixels ) com o nome " [email protected] "
No simulador do iOS , vá para o menu Hardware -> Dispositivo e selecione " iPhone (Retina de 4 polegadas) "
Crie outras imagens, por exemplo, imagens de fundo
fonte
É fácil migrar o iPhone5 e o iPhone4 através de XIBs .........
fonte
Eu resolvo esse problema aqui . Basta adicionar ~ 568h @ 2x sufixo às imagens e ~ 568h aos xib's. Não é necessário mais verificações de tempo de execução ou alterações de código.
fonte
Eu adicionei a nova imagem de inicialização padrão e (ao verificar várias outras respostas do SE ...) verifiquei se meus storyboards se auto-dimensionavam e subvisitavam, mas a retina de 10 cm ainda estava em caixa de correio.
Percebi então que meu plista de informações tinha um item de linha para " Iniciar imagem " definido como " Default.png ", que eu removi e, portanto, o letterbox magicamente não apareceu mais. Felizmente, isso salva outra pessoa da mesma loucura que eu sofri.
fonte
Eu acho que não vai funcionar em todos os casos, mas no meu projeto em particular, ele me impediu de duplicar os arquivos NIB:
Em algum lugar em que
common.h
você pode fazer essas definições com base na altura da tela:No seu controlador base:
fonte
Em um
constants.h
arquivo, você pode adicionar estas instruções de definição:fonte
Para determinar se o seu aplicativo pode suportar o iPhone 5 Retina, use: Sim ou não)
Em um arquivo ".h" comum, adicione:
Em um arquivo ".m" comum, adicione:
fonte
Primeiro crie dois xibs e anexe todos os delegados, classe principal ao
xib
e então você pode colocar nesta condição mencionada abaixo no seuappdelegate.m
arquivo emvocê pode usá-lo em qualquer lugar do programa, dependendo de seus requisitos, mesmo em suas
ViewController
aulas. O que importa mais é que você criou doisxib
arquivos separados paraiphone 4(320*480) and iphone 5(320*568)
fonte
Experimente o método abaixo em uma classe singleton:
fonte
Você pode usar o
Auto Layout
recurso e criar o design usando a resolução de tela do iPhone 5 e ele funcionará para os dispositivos de 4 "e 3,5", mas nesse caso, você deve ter um conhecimento suficiente do gerenciador de layout.fonte
Verificando
bounds
com568
falhará no modo paisagem. O iPhone 5 é iniciado apenas no modo retrato, mas se você deseja oferecer suporte a rotações, a "verificação" do iPhone 5 também precisará lidar com esse cenário.Aqui está uma macro que lida com o estado da orientação:
O uso da chamada 'selectedMode' é de outra postagem que li algumas horas atrás, por isso não tive essa ideia.
fonte
Primeiro mostre esta imagem. Nessa imagem, você mostra um aviso para o suporte ao Retina 4, então clique neste aviso e clique em adicionar para que a tela inicial do Retina 4 seja automaticamente adicionada ao seu projeto.
e depois de usar este código:
fonte
Eu nunca enfrentei um problema com qualquer dispositivo, pois tinha uma base de código para todos, sem valores codificados. O que faço é ter a imagem de tamanho máximo como recurso, em vez de uma para cada dispositivo. Por exemplo, eu teria um para exibição de retina e mostraria como o aspecto se encaixa, para que ele seja visto como em todos os dispositivos. Chegando a decidir o quadro do botão, por exemplo, em tempo de execução. Para isso, uso o valor% da visualização da patente, por exemplo, se quiser que a largura seja metade da visualização pai, pegue 50% da visualização pai e o mesmo se aplica à altura e ao centro.
Com isso, eu nem preciso dos xibs.
fonte
Você pode usar esta definição para calcular se você está usando o iPhone 5 com base no tamanho da tela:
então use uma
if
declaração simples :fonte
Peter, você realmente deve dar uma olhada no Canappi, ele faz tudo isso para você, tudo o que você precisa fazer é especificar o layout da seguinte forma:
A partir daí, o Canappi irá gerar o código objetivo-c correto que detecta o dispositivo em que o aplicativo está sendo executado e usará:
O Canappi funciona como o Interface Builder e o Story Board combinados, exceto que ele está em forma de texto. Se você já possui arquivos XIB, poderá convertê-los para não precisar recriar toda a interface do usuário a partir do zero.
fonte
Você pode verificar manualmente o tamanho da tela para determinar em qual dispositivo você está:
fonte
Você pode adicionar este código:
fonte
scale
seletorUIScreen
e você terá um caso em que seu código de "resolução padrão" não será executado.Este é um código universal real, você pode criar três storyboards diferentes:
Defina o modo Universal do seu projeto e defina o iPhone principal da história com o storyboard iPhone5 e o ipad principal com o storyboard de destino do iPad, agora adicione um novo destino de storyboard para iphone e modifique a resolução para iphone 4s ou menos e agora implemente seu AppDelegate.m
iPhone4 / 4s (é o mesmo para 3 / 3Gs), um para iPhone5 e universalize o projeto , com um novo destino do Storyboard para iPad, agora no AppDelegate.m, abaixo de
didFinishLaunching
adicionar este código:Então você criou um aplicativo Universal para iPhone 3 / 3Gs / 4 / 4s / 5 Todos os tipos de iPod e Todo o tipo de iPad
Lembre-se de integrar todo IMG com
myImage.png
e[email protected]
fonte
De acordo comigo, a melhor maneira de lidar com esses problemas e evitar algumas condições necessárias para verificar a altura do dispositivo, é usar o quadro relativo para visualizações ou qualquer elemento da interface do usuário que você esteja adicionando à visualização, por exemplo: se você estiver adicionando algum elemento da interface do usuário que você deseja na parte inferior da vista ou logo acima da barra de guias, deve-se ter a origem y em relação à altura da vista ou em relação à barra de guias (se houver) e também temos propriedades de redimensionamento automático. Espero que isso funcione para você
fonte
Em vez de usar um conjunto de condicionais, você pode redimensionar sua exibição automaticamente usando o tamanho da tela.
No meu caso, quero uma visualização que preencha o espaço entre alguns campos de entrada na parte superior e alguns botões na parte inferior, de modo a fixar o canto superior esquerdo e o inferior direito variável com base no tamanho da tela. Meu aplicativo preenche a exibição da imagem com a foto tirada pela câmera, para que eu queira todo o espaço que puder.
fonte
Se você precisar converter um aplicativo já existente em universal, precisará selecionar o arquivo xib correspondente-> mostrar Utilitários-> Mostrar inspetor de tamanho.
No Inspetor de tamanho, você pode ver o dimensionamento automático, usando esta ferramenta, você pode converter para o aplicativo iOS existente.
fonte
Usando o xCode 5, selecione "Migrar para o catálogo de ativos" em Projeto> Geral.
Em seguida, use "Mostrar no localizador" para encontrar sua imagem de inicialização. Você pode editá-la como 640x1136 e arrastá-la para o catálogo de ativos, como mostra a imagem abaixo.
Verifique se as seções iOS7 e iOS6 R4 têm uma imagem de 640x1136. Na próxima vez que você iniciar o aplicativo, as barras pretas desaparecerão e o aplicativo usará a tela de 4 polegadas
fonte
Vale a pena notar - no novo Xcode, você precisa adicionar esse arquivo de imagem [email protected] aos ativos
fonte
Use o
Auto Layout
recurso para visualizações. Ele se ajustará automaticamente a todas as resoluções.Crie dois xibs para um controlador com nome de controlador com sufixo ~ iphone ou ~ ipad. No momento da compilação, o Xcode utilizará o xib correto com base no dispositivo.
Use classes de tamanho, se desejar criar um único xib para iPhone e iPad, se a visualização for simples o suficiente para ser portada para iPhone e iPad.
fonte
Há um pequeno problema ao testar no dispositivo iOS e no iOS Simulator. Parece que o simulador (XCode 6.0.1) fornece valores comutados para largura e altura em
[[UIScreen mainScreen] bounds].size
dependendo da orientação do dispositivo.Portanto, isso pode ser um problema ao determinar o tamanho certo da tela física. Esse código também ajuda a diferenciar todas as 2014. Gerações de modelos do iPhone:
Também pode ser facilmente alterado para fazer a distinção entre, por exemplo, iPhone6 de iPhone6 +.
fonte
Eu sugeriria usar a Máscara de redimensionamento automático em seus aplicativos de acordo com a interface da interface do usuário, ele economiza muitos problemas e é melhor do que criar UI diferente para as telas do iPhone 4 e 5.
fonte