Eu tenho um iPhone
aplicativo que possui um storyboard. Agora também quero fornecer um iPad
aplicativo. Então, perguntei-me se existe uma função que me ajude a converter meu iPhone
storyboard em um iPad
storyboard.
Para ser específico:
Existe uma função semelhante ou existe apenas a maneira manual?
Respostas:
Eu descobri um tipo de solução:
Duplique seu iPhone-Storyboard e renomeie-o
MainStoryboard_iPad.storyboard
Feche o Xcode e abra esse arquivo em qualquer editor de texto.
Pesquise
targetRuntime="iOS.CocoaTouch"
e altere paratargetRuntime="iOS.CocoaTouch.iPad"
Altere o código no MainStoryboard_iPad.storyboard de:
<simulatedScreenMetrics key="destination" type="retina4"/>
para<simulatedScreenMetrics key="destination"/>
Agora salve tudo e reabra o Xcode. O iPad-Storyboard tem o mesmo conteúdo que o arquivo do iPhone, mas tudo pode ser desarrumado.
Isso me salvou horas - espero que isso ajude você
fonte
start a bounty
sob a pergunta, selecione quantidade desejada eReward existing answer
...<simulatedScreenMetrics key="destination" type="retina4"/>
a<simulatedScreenMetrics key="destination"/>
Se você tivesse criado um projeto universal, por padrão, o storyboard do iPad vazio teria sido criado, basta selecionar o storyboard do iPhone, selecionar todos (Command + A), copiar (Command + C) e colá-lo no storyboard do iPad. Certifique-se de mover o ponto de entrada do storyboard vazio para o storyboard recém-copiado antes de compilar.
fonte
Isso não funcionou muito para mim. Eu fiz algo um pouco diferente.
<scenes> <!--Contents View Controller-->
</class> </classes>
Isso funcionou para mim. Recebi um novo layout com todas as minhas tomadas conectadas, o que só me salvou algumas horas.
fonte
.storyboard
arquivos e cliqueOpen As > Source Code
para visualizar o XML bruto.Ao ler muitos threads no stackoverflow, descobri que a solução é
1. Duplique o iPhone-Storyboard e renomeie-o como MainStoryboard_iPad.storyboard
2.Clique com o botão direito do mouse no storyboard -> "abrir como" -> "Código-fonte".
3. Procure targetRuntime = "iOS.CocoaTouch" e altere-o para targetRuntime = "iOS.CocoaTouch.iPad"
5. Pesquise
<simulatedScreenMetrics key="destination" type="retina4"/>
e altere para<simulatedScreenMetrics key="destination"/>
4.Agora salve tudo e clique com o botão direito em MainStoryboard_iPad.storyboard “open as” -> "IOS StoryBoard" 5. Você também pode precisar alterar suas restrições. Isso é tudo que você fez.
fonte
fonte
1 - Crie seu
"MainStoryboard_iPad.storyboard";
2 - Clique com o botão direito do mouse em você
"MainStoryboard_iPhone.storyboard"
e em "Abrir como -> Código Fonte". Copie tudo;3- Clique com o botão direito do mouse em você
"MainStoryboard_iPad.storyboard"
e em "Abrir como -> Código Fonte". Cole tudo. Agora pesquise e mude:targetRuntime="iOS.CocoaTouch" to targetRuntime="iOS.CocoaTouch.iPad"
type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" to type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.iPad.XIB"
4 - Salve. Agora reabra, mas usando o construtor de interface. Você só precisará reorganizar.
Este método também pode ser usado para arquivos .xib
fonte
Isso está acontecendo de outra maneira, mas consegui selecionar tudo e copiar no storyboard do iPad (~ 35 cenas) e colá-lo no storyboard do iPhone. Os tamanhos das cenas foram ajustados automaticamente. Eu só vi dois problemas, tive que substituir o UISplitViewController (já que é apenas o iPad) e o plano de fundo padrão tornou-se transparente em vez de cinza (ainda trabalhando para corrigir isso corretamente, sem definir manualmente o plano de fundo para tudo).
EDIT: Parece que o plano de fundo padrão do UITableView no inspetor de Atributos é bastante estranho. Eu tive que definir manualmente o plano de fundo para "Agrupar cor de plano de fundo da exibição de tabela" para exibições de tabelas agrupadas e "Cor branca" para exibições de tabela não agrupadas. Em seguida, ele foi exibido como "Padrão" (presumo que ele correspondeu a um valor codificado). - Na verdade, ainda mais fácil, mudar de "Agrupado" para "Estático" e voltar parece redefinir a cor padrão.
fonte
Aqui está algo que me salvou horas e pode ajudar aqueles com habilidades em Python.
Desenvolvo um aplicativo nos últimos dois meses, focado apenas no iPad, iterando o UX com a equipe.
Hoje focado na criação da versão para iPhone, segui as etapas acima (obrigado!), Mas eu não queria redimensionar todos os elementos da interface do usuário das dimensões do iPad no editor visual do storyboard.
Então, escrevi este pequeno script python jig para procurar no arquivo do storyboard x, y, largura, altura e dimensionar tudo na proporção 320./768. Permitiu-me, então, me concentrar apenas nos ajustes finos.
Copie o storyboard do iPad em um novo arquivo. (por exemplo, iPhoneStoryboard.storyboard)
Execute o script abaixo com o nome do arquivo copiado do storyboard como o primeiro parâmetro.
Gerará arquivo de saída com o sufixo _adjusted.storyboard (por exemplo, iPhoneStoryboard.storyboard_adjusted.storyboard)
Espero que ajude...
fonte
Vá para o Resumo de destino e mude os dispositivos para universal, depois desça e defina a versão do ipad para qualquer storyboard que você desejar, incluindo um copiado e renomeado, se quiser.
fonte
Assim como uma nota rápida para aqueles que podem ter tido o meu problema com isso:
Meu problema:
O conteúdo do storyboard copiou muito bem para um novo arquivo do quadro que eu adicionei. No entanto, ele não colocaria alterações no meu iPad provisionado. Percebendo que eu tinha que mudar o storyboard designado para o destino da compilação (veja a imagem), deixe as alterações aparecerem.
Eu postaria uma imagem se tivesse os pontos, mas a configuração está localizada em:
Navegador de projeto no menu de origem do lado esquerdo, destino raiz da guia geral do painel (painel central), informações de implantação (segundo subtítulo), com a guia do botão do iPad selecionada.
A partir daí, escolha seu storyboard em "interface principal".
Obrigado pelo post, espero que essa menção ajude um problema em algum lugar.
fonte
Apenas por diversão, no XCode 5.1 e iOS 7.1, também precisei alterar os valores de "toolVersion" e "systemVersion" para isso:
Sem isso, o novo arquivo de storyboard não seria compilado
fonte
Usando as Classes de tamanho XCode6, você não precisa mais converter o storyboard em iPad. O mesmo Storyboard pode ser usado para o iPhone e o iPad, evitando que você mantenha dois arquivos atualizados.
O storyboard resultante é compatível com iOS7 +.
Leia mais sobre isso aqui: https://developer.apple.com/library/ios/recipes/xcode_help-IB_adaptive_sizes/chapters/AboutAdaptiveSizeDesign.html#//apple_ref/doc/uid/TP40014436-CH6-SW1
Use classes de tamanho para permitir que um storyboard ou arquivo xib funcione com todos os tamanhos de tela disponíveis. Isso permite que a interface do usuário do seu aplicativo funcione em qualquer dispositivo iOS.
fonte
For Xcode10
Apenas duplicar
Main.storyboard
Em seguida, renomeie os arquivos para
Main_iPad.storyboard
eMain_iPone.storyboard
Defina nomes apropriados em
.plist
4. Basta selecionar o .storyboard adequado para configurar
fonte
Esta funcionalidade está agora incorporada. Por exemplo, se alguém alterar as configurações do projeto em Informações de implantação -> Dispositivos do iPhone para Universal, a seguinte caixa de diálogo será exibida:
fonte
Eu segui esta discussão quando fui atingido com o mesmo problema ontem. Os passos que segui
targetRuntime="iOS.CocoaTouch"
paratargetRuntime="iOS.CocoaTouch.iPad"
<simulatedScreenMetrics key="destination" type="retina4"/>
para<simulatedScreenMetrics key="destination"/>
Foi isso .. Obrigado a todos pela ajuda ..
fonte
A maneira mais fácil e confiável de fazer isso é copiar e colar do storyboard do iPad.
Você precisará redimensionar, mas pode ser mais rápido do que recriar todo o storyboard.
fonte
Existe uma solução realmente simples para as versões do Xcode que suportam classes de tamanho (Testada no Xcode 7, que é a versão atual no momento da redação). Marque a caixa de seleção "usar classes de tamanho" em um arquivo de storyboard ( File Inspector ), confirme a caixa de diálogo exibida. Em seguida, desmarque a mesma caixa de seleção - o Xcode perguntará se você deseja usar esse storyboard com um iPhone ou iPad e converterá as telas nele adequadamente. Não há necessidade de editar diretamente o arquivo do storyboard . Para o iPad e o iPhone, basta copiar o mesmo storyboard e configurar um para o iPad e outro para o iPhone usando o método descrito.
E antes que alguém sugira o uso de classes de tamanho - apesar de ótimas, elas são menos convenientes para a interface do usuário altamente personalizada, como jogos etc.
fonte
Uma abordagem diferente
Adicione um controlador de exibição vazio com o controlador de navegação no iPad-Storyboard
Altere a classe para a classe do seu primeiro ViewController usado para iPhone, "fooViewController"
Adicione o Storyboard-Identifier no iPhone-Storyboard "fooViewController_storyboard_identifier" para o primeiro ViewController
Vá para "fooViewController.m"
Adicionar bool Bool variável
nibWasLoadForIpad=false
Vá para
viewDidLoad
-Method(ps. Saiba que o problema é que os fundos da visualização serão definidos em branco)
fonte
Você deve criar um relatório de erro com a Apple. Você pode dizer que é uma duplicata minha (10167030) que está aberta desde setembro de 2011. A coisa frustrante do meu ponto de vista é que o recurso existia no Xcode 3 ...
fonte
Obrigado pelas respostas a todos.
Segui as etapas acima, mas quando executei o aplicativo no simulador ou no iPad, ele continuou usando o storyboard do iPhone.
Por alguma razão, quando mudei o dispositivo de destino para Universal, em vez de iPhone, o Xcode (v5.0) não atualizou o arquivo app-Info.plist para incluir o storyboard do iPad, então tive que adicionar manualmente a seguinte entrada ( usando o editor plist no Xcode):
Nome da base do arquivo principal do storyboard (iPad) ==> MainStoryboard_iPad
fonte
Acabei de mudar (além da resposta de @tharkay):
e funciona muito bem!
Eu uso isso no XCode 8.3.3
fonte