iphone - working - pwa ios app icon




Convertendo o Storyboard do iPhone para o iPad (14)

Eu tenho um aplicativo para iPhone que tem um storyboard. Agora eu quero fornecer um aplicativo para iPad também. Então, eu perguntei se há uma função que me ajude a converter meu storyboard do iPhone em um storyboard do iPad .

Para ser específico:

Existe uma função semelhante ou existe apenas o modo manual?


Uma abordagem diferente

  1. Adicione um Controlador de Visualização vazio com o Controlador de Navegação no iPad-Storyboard

  2. Mude a Classe para a Classe do seu primeiro ViewController usado para iPhone, "fooViewController"

  3. Adicione o Identificador de Storyboard no iPhone-Storyboard "fooViewController_storyboard_identifier" para o primeiro ViewController

  4. Vá para "fooViewController.m"

  5. Adicionar bool Variável bool nibWasLoadForIpad=false

  6. Vá para viewDidLoad

if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && !nibWasLoadForIpad)
{
    nibWasLoadForIpad=true;
    UIStoryboard* Storyboard_iphone=[UIStoryboard storyboardWithName:@"Main_iPhone" bundle: nil];
    fooViewController *controller = [Storyboard_iphone instantiateViewControllerWithIdentifier:@"fooViewController_storyboard_identifier"];
    [self.navigationController pushViewController:controller animated:YES];
    self.modalPresentationStyle = UIModalPresentationCurrentContext;
}

(ps. Sei que o problema é que o fundo da vista será ajustado para branco)


1 - Crie o seu "MainStoryboard_iPad.storyboard";

2 - Clique com o botão direito do mouse em "MainStoryboard_iPhone.storyboard" e "Open as -> Source Code". Copie tudo;

3- Clique com o botão direito do mouse em "MainStoryboard_iPad.storyboard" e "Open as -> Source Code". Cole tudo. Agora, pesquise e altere:

  • 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 - Salvar. Agora reabra mas usando o construtor de interface. Você só terá que reorganizar.

Esse método também pode ser usado para arquivos .xib


Acabei de mudar (além da resposta de @tharkay):

 <device id="ipad9_7" orientation="landscape">

e funciona muito bem!

Eu uso isso no XCode 8.3.3


Apenas como uma rápida nota de pegação para aqueles que podem ter tido o meu problema com isso:

Meu problema:

O conteúdo do storyboard copiado muito bem para um novo arquivo de placa que eu adicionei. No entanto, não colocaria as alterações no meu iPad provisionado. Percebendo que eu tive que mudar o storyboard designado para o alvo de compilação (veja imagem), mostre as mudanças.

Eu colocaria uma imagem se tivesse os pontos, mas a configuração está localizada em:

Navegador do projeto no menu de origem do lado esquerdo, alvo geral do projeto (painel central), guia geral, informações de implantação (segundo subtítulo), com a guia do botão do iPad selecionada.

De lá, escolha seu storyboard em "interface principal".

Obrigado pelo post, espero que esta menção ajude um obstáculo em algum lugar.


Aqui está algo que me salvou horas e pode ajudar aqueles com habilidades em Python.

Eu tenho construído um aplicativo nos últimos dois meses, focado apenas em iPad, interagindo com o UX com a equipe.

Hoje, com foco na criação da versão para iPhone, segui os passos acima (obrigado!), Mas eu não queria ter que redimensionar todos os elementos de interface do usuário das dimensões do iPad no editor de storyboard visual.

Então eu escrevi este pequeno script jig python para varrer o arquivo do storyboard para x, y, width, height e dimensionar tudo na proporção 320./768. Permitiu que eu me concentrasse apenas nos ajustes precisos.

  1. Copie seu storyboard do iPad em um novo arquivo. (por exemplo, iPhoneStoryboard.storyboard)

  2. Execute o script abaixo com o nome do arquivo do storyboard copiado como o primeiro parâmetro.

  3. Gerará o arquivo de saída com o sufixo _adjusted.storyboard (por exemplo, iPhoneStoryboard.storyboard_adjusted.storyboard)

Espero que ajude...

import re
import sys
import math

afile = sys.argv[1]

scale = 320./768.

number_pattern = '[-0-9]+(.[0-9]+)?'
#width_pattern = 'width="[-0-9]+( ?px)?"'
width_pattern = 'width="[-0-9]+(.[0-9]+)?( ?px)?"'
height_pattern = 'height="[-0-9]+(.[0-9]+)?( ?px)?"'
x_pattern = 'x="[-0-9]+(.[0-9]+)?( ?px)?"'
y_pattern = 'y="[-0-9]+(.[0-9]+)?( ?px)?"'


def replacescaledvalue(scale,pattern,sometext,replacefmt) :
    ip = re.search(pattern, sometext, re.IGNORECASE)
    if(ip) :
        np = re.search(number_pattern,ip.group(0))
        if(np) :
            val = float(np.group(0))
            val = int(math.floor(val*scale))
            sval = replacefmt+str(val)+'"'#+'px"'
            newtext = re.sub(pattern,sval,sometext)
            return newtext
    else :
        return sometext

fin = open(afile)
fout = open(afile+"_adjusted.storyboard", "wt")
for line in fin:
    newline = line
    newline = replacescaledvalue(scale,width_pattern,newline,'width="')
    newline = replacescaledvalue(scale,height_pattern,newline, 'height="')
    newline = replacescaledvalue(scale,x_pattern,newline, 'x="')
    newline = replacescaledvalue(scale,y_pattern,newline, 'y="')
#   print newline
    fout.write( newline )

fin.close()
fout.close()

Da leitura de muitos threads no eu descobri que a solução é-

1.Duplicar seu iPhone-Storyboard e renomeá-lo MainStoryboard_iPad.storyboard

2. clique no storyboard -> “abrir como” -> “Código Fonte”.

3.Procure por targetRuntime = "iOS.CocoaTouch" e mude para targetRuntime = "iOS.CocoaTouch.iPad"

5.Procure por <simulatedScreenMetrics key="destination" type="retina4"/> e mude 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 ter que mudar suas restrições. Isso é tudo que você fez.


Eu descobri um tipo de solução:

  1. Duplique seu iPhone-Storyboard e mude o nome MainStoryboard_iPad.storyboard

  2. Feche o Xcode e abra este arquivo em qualquer editor de texto.

  3. Procure targetRuntime="iOS.CocoaTouch" e altere-o para targetRuntime="iOS.CocoaTouch.iPad"

  4. Altere o código no MainStoryboard_iPad.storyboard de:

    <simulatedScreenMetrics key="destination" type="retina4"/> para

    <simulatedScreenMetrics key="destination"/>

  5. Agora salve tudo e reabra o Xcode. O iPad-Storyboard tem o mesmo conteúdo do arquivo do iPhone, mas tudo pode ser desarranjado.

Isso me salvou horas - espero que isso ajude você


Eu segui esse tópico quando fui atingido com o mesmo problema ontem. Os passos que segui

  1. Para o Xcode 5.1, tive que fazer algumas limpezas no storyboard do iPhone, como a falta de reuseIdentifiers de células da tabela, fornecer identificação de story board para cada controlador, remover cenas não utilizadas.
  2. Copie MainStoryboard_iPhone.storyboard para MainStoryboard_iPad.storyboard.
  3. Usando o editor vi - mudou targetRuntime="iOS.CocoaTouch" para targetRuntime="iOS.CocoaTouch.iPad"
  4. Altere o código no MainStoryboard_iPad.storyboard de: <simulatedScreenMetrics key="destination" type="retina4"/> para <simulatedScreenMetrics key="destination"/>
  5. Abra o projeto no Xcode.
  6. Alterou os dispositivos de implantação para Universal - Escolha a opção de NÃO copiar o storyboard do iPhone.
  7. O Xcode padronizará o Alvo de Implementação para 7.1 e cuidará das funções reprovadas.
  8. Para corrigir o erro de visualização extraviado no Storyboard do iPad - Alterou o layout do quadro para os controladores com erros.

Foi isso .. Obrigado a todos pela vossa ajuda ..


Isso está indo para o outro lado, mas eu pude fazer um select all & copy no meu 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 fundo para tudo).

EDIT: Parece que o plano de fundo padrão para UITableView no inspetor de atributos é bastante estranho. Eu tive que definir manualmente o plano de fundo para "Group Table View Background Color" para exibições de tabela agrupadas e "White Color" para exibições de tabela não agrupadas. Em seguida, ele foi exibido como "Padrão" (suponho que ele tenha correspondido a um valor codificado). - Na verdade, ainda mais fácil, mudar de "Agrupado" para "Estático" e voltar parece redefinir a cor padrão.


Isso não funcionou bem para mim. Eu fiz algo um pouco diferente.

  1. Crie um novo arquivo de story board para a versão do iPad
  2. Abra o novo arquivo e o arquivo que eu quero copiar em textwrangler (editor de texto)
  3. Copiou o texto xml do arquivo antigo para o novo arquivo entre essas tags xml
  4. Primeiro Tag <scenes> <!--Contents View Controller-->
  5. Cole aqui
  6. End Tags </class> </classes>

Isso funcionou para mim. Eu tenho um novo layoutout com todas as minhas tomadas conectadas, o que sozinho me salvou algumas horas.


Para Xcode10

  1. Apenas duplique Main.storyboard

  2. Em seguida, Main_iPad.storyboard arquivos para Main_iPad.storyboard e Main_iPone.storyboard

  3. Definir nomes apropriados em .plist

4. Selecione o apropriado .storyboard para configurar


Se você tivesse criado um projeto universal, por padrão o storyboard vazio do iPad teria sido criado, basta selecionar o storyboard do iPhone para 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 compilá-lo.


Vá para o seu Target Summary e mude os dispositivos para universal, então desça e configure a versão do iPad para qualquer storyboard que você goste, incluindo um copiado e renomeado, se quiser.


Você deve criar um relatório de bug com a Apple. Você pode dizer que é uma cópia minha (10167030) que está aberta desde setembro de 2011. A coisa frustrante do meu ponto de vista é que o recurso existia no Xcode 3 ...







storyboard