Iniciar imagem não aparece no meu aplicativo para iOS


149

Desejo exibir uma tela de inicialização simples no meu aplicativo, criada usando o Xcode 6.0.1.

Adicionei uma tela de inicialização de duas maneiras: como um XIB (com o nome padrão, LaunchScreen.xib) e como uma imagem de inicialização definida no xcassets.

Verifiquei se meu "Launch Screen File" está definido como LaunchScreen.xib.

Simulei todos os dispositivos disponíveis (por exemplo, "iPhone5 iOS8" / "iPhone5s iOS8" / "iPhone6 ​​iOS8". Observe que apenas o iOS 8 está disponível no simulador).


As imagens usadas na tela de inicialização não devem estar em Images.xcassets, devem ser colocadas no pacote, para verificar se há uma imagem de teste que não esteja nos xcassets e definir outra cor de segundo plano para o próprio .xib, para ver se estiver carregando o .xib
Juan Boero

@JuanBoero Por que no pacote? Eles são usados ​​no momento da construção, não no tempo de execução.
Rudolf Adamkovič

Respostas:


239

Portanto, isso tem sido bastante doloroso para algo que deve ser trivial. Aqui está o que eu fiz:

Use xcassets

Decidi usar .xcassets versus o .xib para o lançamento. Eu apaguei o .xib. Se você já possui images.xcassets em seu projeto, é ótimo. Caso contrário, você pode adicionar um em File> New> file:

AddNewASsetCatalog

Criar um conjunto de imagens de inicialização

Agora, crie no mínimo um conjunto de imagens de inicialização e um conjunto de ícones no arquivo .xcassets clicando com o botão direito do mouse na área do navegador.

Adicionar nova imagem de inicialização e ícone do aplicativo

Atualize os ícones dos aplicativos e inicie as configurações de imagens

Depois, verifiquei se os "Conjuntos de ícones e imagens de aplicativos" no meu destino são os seguintes.

Muito importante: verifique se a configuração "Iniciar arquivo de tela" está em branco.

Ícone de aplicativos e conjuntos de imagens

Adicione as imagens

Por último, mas não menos importante, a terminologia usada pela Apple para a seleção do dispositivo é confusa. Inicialmente, pensei que, como estou implantando apenas para iOS8 (iPhone Portrait), posso fazer isso e colocar as imagens de lançamento do iPhone 6 e iPhone 6+:

Aparelhos

Eu rapidamente percebi que não é assim que funciona e recebi um aviso: "É necessária uma imagem de inicialização do iPhone Retina (4 polegadas) para iOS 7.0 e posterior".

Então, eu tive que selecionar o iPhone no iOS 7.0 e posterior e adicionar uma imagem para o iPhone 5s.

Portanto, para descobrir quais caixas marcar à direita, não faça a pergunta: qual é a minha orientação mínima para iOS e dispositivo e dispositivo, mas pergunte:

Quais dispositivos podem suportar meu iOS mínimo? Agora, qual é o iOS mínimo suportado nesses dispositivos? E certifique-se de marcar todas essas caixas. Então, para mim, estou segmentando o iPhone 5s, 6 e 6 Plus em 8.0, mas, como o iPhone 5s pode existir com o 7.0, preciso marcar a caixa 7.0 também para mostrar o espaço reservado para a imagem. Em outras palavras, a caixa de seleção (iOS) à direita mostra a versão mínima do iOS disponível para esse dispositivo e você precisa clicar nela para mostrar o espaço reservado para a imagem e colocar uma imagem, independentemente de você estar implantando nesta versão do iOS ou não .

Espero que isso ajude alguém.

Adicionando todos os dispositivos

insira a descrição da imagem aqui


1
sem tela o lançamento do tamanho do teclado é diferente de qualquer idéia de como consertar isso screencast.com/t/Vk18vuhSqZv
souvickcse

2
Este material é tão irritante.
#ReduxDJ

5
Você senhor, ganhou a internet.
OhadM 13/08/2015

46
Isso funcionou, mas as alterações só foram visíveis quando o aplicativo foi excluído do dispositivo e reinstalado. A tela de inicialização antiga parecia persistir mesmo após a limpeza de caches e a exclusão de dados derivados.
Francis Jervis

15
Ahhhh, eu precisava excluir meu aplicativo do telefone para que as alterações entrassem em vigor, só perdi muito tempo: '(
Phil Hudson

31

O LaunchScreen.xibvalor e o info Launch screen interface file base namesão da minha experiência, ambos os espaços reservados criados quando o projeto é criado. Se você deseja usar Images.xcassetsexclusivamente as telas de inicialização, exclua LaunchScreen.xibo info.plistitem e o item.

Se você fornecer a info.plistconfiguração, seu aplicativo usará o xibe não o seuImages.xcassets


1
Boa solução direta.
Travis M.

2
A solução "arcady bob" funcionou para mim: eu abri "info.plist" e excluí o elemento "Launch screen interface file base name", executei meu aplicativo e a imagem de lançamento finalmente estava lá.
Jose Manuel Abarca Rodríguez 31/03

Isso é antigo, mas foi o que o corrigiu para mim.
Martin Martin

20

Xcode 8:

As imagens usadas no LaunchScreen.xib não devem estar em um .xcassets, tente soltá-las no pacote.

Parece que quando o .xib é carregado, as imagens nos .xcassets ainda não estão disponíveis.

EDIT: Por algum motivo opaco após adicionar algumas localizações, a tela de inicialização parou de funcionar, agora funciona com uma imagem dos ativos, extremamente estranha.


2
Para adicionar à sua resposta ... Recentemente, tentei usar uma fonte personalizada no meu arquivo "Launch Screen.storyboard". A razão pela qual eu não pude ficar claro depois de ler esta resposta do SO e um pouco mais de pesquisa / teste. É o mesmo para uma imagem ... O Xcode prepara instantâneos retrato e paisagem da tela de inicialização do seu aplicativo e (atualmente) salva aqui:, /Library/Caches/Snapshots/<<app_bundle>>/concluído antes do carregamento dos arquivos de suporte, incluindo fontes personalizadas e o catálogo de ativos.
precisa saber é o seguinte

3
Percebi que imagens maiores (> 512px) não apareciam na minha LaunchScreen quando carregadas de um .xcasset, enquanto imagens menores apareciam. Obrigado por mencionar sua solução!
A6

Muito obrigado, passei quase 3 horas depurando esse problema. Acabou que .xcasstes foram os culpados #
Sergey Grischyov 29/04

O mesmo aqui, alterou o arquivo de imagem usado no xib de 1024x1024 para uma resolução inferior a 512px e o corrigiu.
Eike 30/05

1
@JuanBoero No pacote? Eles são usados ​​no momento da construção, não no tempo de execução.
Rudolf Adamkovič

17

Minha solução foi criar todas as imagens de lançamento. insira a descrição da imagem aqui

Em seguida, defino a fonte de imagens de inicialização como o recurso LaunchImage e deixo o arquivo da tela de inicialização em branco.

Finalmente, se o projeto não tiver um Launch Screen.xib, adicione esse arquivo e deixe-o como está. insira a descrição da imagem aqui


4
adicionando tantas imagens. aumenta o tamanho do ipa. O XIB Launch é a solução para isso. por exemplo, se você tem um plano de fundo simples e simplesmente um logotipo no meio, é recomendável usar o XIB. Basta definir a cor de fundo e adicionar uma UIImage no meio, é isso. Mas, novamente, é uma escolha
Jasmeet

Adicionar o Launch Sceen.xib sem usá-lo, realmente fez o truque para mim. Obrigado!
27615 Jacco

O Xcode 6 não me permite alterar a "fonte da imagem de inicialização", mas a mantém com este texto, que não tenho permissão para modificar: "Usar catálogo de ativos" - e está se comportando mais como um botão, onde, se eu clicar nele, obtenha a opção de: Migrar imagens de inicialização para um catálogo de ativos ... não sei para onde ir a partir daqui. Alguém mais se deparou com isso? Já importei uma pasta inteira de imagens de inicialização pré-fabricadas em tamanhos diferentes para o catálogo de recursos do LaunchImage. Nenhuma mensagem de erro, mas não vejo a minha a minha imagem app imagem de lançamento ou mesmo depois de seguir as instruções acima, reconstrução, reiniciar o meu computador ...
ensolarado

12

Para mim, funcionou quando eu desinstalei o aplicativo e reiniciei o simulador. Quando instalado novamente, a imagem de inicialização apareceu como esperado. Isso também funcionou em um dispositivo real.


Depois de desinstalar o aplicativo, também tive que reiniciar o dispositivo. Além disso, limpei o cache do Xcode e também reiniciei o Xcode.
Lenooh # 30/18

11

Para as pessoas que estão usando o Asset Catalog's Launch Image, como aprendi da maneira mais difícil, tive esse cenário em que recebi um jpgarquivo pela primeira vez e solicitei que o convertessem PNG.

Confiei neles o suficiente para vasculhar a Internet primeiro por que a imagem de lançamento não estava aparecendo e não deu qualquer solução, então tentei colocar de volta a antiga imagem de lançamento e estava funcionando bem; foi lá que pensei have não é um PNGarquivo adequado .

TL; DR: verifique se você está realmente usando um arquivo PNG adequado, não um arquivo com uma extensão renomeada.


1
cuidado ao usar letras maiúsculas nas extensões de arquivo, enquanto o dispositivo localizará o arquivo corretamente, o simulador talvez não.
Juan Boero

10

A remoção de "Iniciar nome da base do arquivo da interface da tela" do arquivo Info.plist E da lixeira "Iniciar Screen.xib" funcionou para mim.


Isso resolveu meu problema. Mas acho que a apple está sugerindo que seria melhor para outras pessoas usar o arquivo xib em vez de gerar 9 imagens diferentes.
TypingPanda 5/05

7

Simplesmente remover e reinstalar o aplicativo funcionou para mim:

  • Testando no Simulador

    1. Exclua o aplicativo no simulador.
    2. Saia e reinicie o simulador.
    3. Execute o projeto novamente no Xcode.

  • Teste no dispositivo

    1. Exclua o aplicativo do dispositivo.
    2. Execute o projeto novamente no Xcode.

2
Para o dispositivo, não apenas excluir e reinstalar não funcionou para mim. Reiniciar telefone (dispositivo) foi a solução no meu caso
Kutay Demireren

6

O problema com a resposta aceita é que, se você não definir o arquivo de tela de inicialização, seu aplicativo estará no modo de aumento de escala em dispositivos como o iPhone 6 e 6+ => renderização embaçada.

Abaixo está o que eu fiz para ter uma solução completa de trabalho (estou direcionando o iOS 7.1 e usando o Xcode 8) em todos os dispositivos (realmente, eu estava ficando louco por esse problema de aumento de escala)

1. Prepare seus .xcassets

Para simplificar, estou usando um arquivo .PDF de vetor. É muito conveniente e evite criar várias imagens para cada resolução (1x, 2x, 3x ...). Suponho também que você já criou seus xcassets.

  • Adicione sua imagem da tela de inicialização (ou arquivo vetorial) ao seu projeto
  • Vá para o seu .xcassets e crie um novo conjunto de imagens . Na janela Atributos da imagem, selecione Escalas -> Escala única
  • Arraste e solte o arquivo vetorial no conjunto de imagens.

Crie um conjunto de imagens para seus .xcassets

2. Crie seu arquivo Launch Screen

Criar um arquivo da tela de inicialização

3. Adicione sua imagem ao seu arquivo Launch Screen

  • Adicione um objeto Image View ao seu arquivo Launch Screen (exclua os rótulos que foram criados automaticamente). Essa visualização da imagem deve se referir ao conjunto de imagens .xcassets anterior . Você pode consultá-lo no atributo Nome . Nesse estágio, você deve ver corretamente a imagem da tela de inicialização na visualização da imagem.
  • Adicione restrições a esta exibição de imagem para manter a proporção, dependendo da resolução da tela.

Adicione a imagem da tela inicial ao seu arquivo Launch Screen

4. Adicione o arquivo Launch Screen ao seu destino

Por fim, em suas propriedades Target General, consulte o arquivo Launch Screen. Propriedades de destino e tela de inicialização

Inicie seu aplicativo e sua tela inicial deve ser exibida. Tente também no iPhone6 ​​e iPhone6 ​​+, e seu aplicativo deve ser exibido corretamente sem nenhum aumento de escala (o arquivo Launch Screen visa fazer isso).


Eu tentei isso, mas não funcionou: stackoverflow.com/questions/43168145/… Alguma idéia do porquê? Muito obrigado.
Vaddadi Kartick

Eu acabei de descobrir isso. Minha imagem de inicialização não estava aparecendo, eu recebo uma tela branca ao iniciar em um dispositivo (iPhone 6, 7+) ou testFlight. Correção: renomeou "Landing_screen.png" para apenas "Landing_screen" removendo a parte .png. O ícone da imagem no Xcode mudou para o ícone branco e no storyboard da tela de lançamento, a imagem aparece como um ponto de interrogação agora. A imagem Iniciar agora aparece e não a tela branca.
27717 Brian

Eu tenho um problema similar. Ao usar gráficos vetoriais (pdf), a imagem não é exibida na tela Lunch, mas se eu usar o mesmo storyboard que Main (que é mostrado após a tela Lunch), posso ver a imagem. Então, meu palpite é que gráficos vetoriais não são os preferidos como tela de almoço.
Adi

Eu consegui fazer isso funcionar reiniciando o simulador. Anteriormente, excluí o aplicativo e limpei o projeto, mas a imagem inicial ainda não estava aparecendo.
Adi

5

Depois de várias horas frustradas, decidi usar dessa maneira. Funciona para iPhone e iPad (no Xcode 6.1)

  1. Arquivo >> Novo arquivo >> Interface do usuário >> Tela de inicialização
  2. Crie uma nova chave / valor: "Iniciar nome da base do arquivo da interface da tela" / "Seu nome da tela de inicialização" em YourApp-Info.plist

1 imagem vale mais que mil palavras. Por favor, veja abaixo:

Arquivo >> Novo arquivo >> Interface do usuário >> Tela de inicialização

Crie uma nova chave / valor "Iniciar nome da base do arquivo da interface da tela" / "Seu nome da tela de inicialização" em YourApp-Info.plist


4

Eu li sobre um bug no Xcode 6 que impede que aplicativos em modo paisagem exibam uma imagem de inicialização.

Tente definir imagens e orientação em Images.xcassets:

Captura de tela Xcode do Images.xcassets


1
o que exatamente você está tentando dizer com a captura de tela?
NikkyD 22/10

2
para verificar a orientação no inspetor de atributos.
Carlodurso 22/10

2

Há um erro no qual as imagens de inicialização do Xcode 6 armazenadas nos arquivos de ativos fazem com que apenas os aplicativos iPhone paisagem no iOS7 / iOS8 exibam uma imagem de inicialização preta. iPad funciona bem.

http://www.raywenderlich.com/forums/viewtopic.php?f=2&t=10868

Solução: use o novo Launchscreen.xib para ios8 + em diante. (é muito melhor)

Para que os dispositivos ios7 funcionem, basta desativar a fonte de imagens de inicialização e usar os nomes dos arquivos de imagens de inicialização da velha escola na lista.

iphone5 - Default-568h@2x.png 
iphone4s - Default@2x.png
ipad2 - Default-Landscape~ipad.png
ipad retina - Default-Landscape@2x~ipad.png

Doloroso, mas funciona. B
insira a descrição da imagem aqui


2

Eu tentei de tudo, mas a solução era extremamente simples. Basta usar o arquivo .jpg em vez de .png no LaunchScreen.storyboard. Parece que o iOS não processa o arquivo .png ou o tamanho da imagem relativamente grande na tela de inicialização.


Eu tinha um png na minha tela de inicialização - que era exibida perfeitamente ao criar o storyboard no Xcode - mas só aparecia em preto quando tentava executar o aplicativo em um dispositivo real. Depois de puxar meu cabelo por um tempo, substituí o jpg e agora funciona bem. Obrigado!
tiritea

2

Faça o que o Spectravideo328 respondeu e:

Tente desmarcar a caixa iOS 7 e posterior e VERIFIQUE a caixa iOS 6 e anterior no catálogo de ativos. Parece haver um bug na imagem de lançamento do iOS 7. (Ambos têm as mesmas imagens de inicialização, exceto a de 320 x 480)

Espero que isso ajude, ajudou para mim!


1

Configurei "LaunchImage" no meu catálogo de ativos e simplesmente limpei o campo "Launch Screen" e pronto! Eu tinha as imagens de lançamento aparecer ...


Você obterá escala herdada em seu aplicativo com essa opção.
George Maisuradze

@GeorgeMays Como você pode usar o Launch Images sem obter escala herdada?
Crashalot

1

Uma maneira é adicionar também "Launch Screen" ( LaunchScreen.xib), colar a imagem UIImageViewe, em seguida, defina-a como " Horizontal Horizontal in Container " e " Vertical Center in Container " em "Align" se você estiver usando o Auto Layout.

Tela: http://i.stack.imgur.com/CfnHT.png

Não se esqueça de colocar LaunchScreen.xibem "Iniciar arquivo de tela".


1

Eu tive o mesmo problema depois que comecei a usar o Xcode 6.1 e alterei minhas imagens do iniciador. Eu tinha todas as imagens em um catálogo de ativos. Eu obteria apenas uma tela preta em vez da imagem estática esperada. Depois de tentar tantas coisas, percebi que o problema era que o Catálogo de ativos tinha o 'Membro de destino' do projeto marcado na visualização FileInspector. Marcar a opção ON fez a mágica e a imagem começou a aparecer no lançamento do aplicativo.


1
  • Verifique se as imagens têm tamanho exato, de acordo com as diretrizes da Apple.
  • Certifique-se de selecionar apenas uma opção: iniciar o arquivo de tela ou Iniciar fonte de imagem. Você pode encontrar essas duas opções em Configurações de criação do projeto -> Geral

Minha sugestão para você é selecionar Iniciar fonte de imagem como Image.Assets. Crie ativos de imagem inicial na pasta Image.assests.

Imagem de referência para a configuração correta: insira a descrição da imagem aqui


0

Tentei abrir um novo projeto e seguir as mesmas etapas que você fez para definir uma tela de inicialização.

Por padrão, o .xib foi definido como "Iniciar arquivo de tela" e a tela branca com um rótulo apareceu por meio segundo no simulador.

Depois, inicio um "Launch Images Source" e defino-o como Images.xcassets, que é gerado com as imagens de plano de fundo que adicionei ao projeto. (tudo de bom até agora)

Execute novamente o simulador e as imagens de inicialização não serão exibidas ...

Após excluir o "Arquivo de tela de inicialização" especificado e uma limpeza: Produto -> Limpeza, no menu superior, as imagens de inicialização finalmente são exibidas.

Talvez isso ajude?


Terrence - você tentou executar o simulador novamente? A razão pela qual pergunto é que essa técnica funciona na PRIMEIRA vez que corro. Mas, ao refazer o simulador, voltei à estaca zero.
Eddie Hartman #

Não tentei a segunda vez quando comentei. Agora eu vejo o mesmo problema.
Terrence Giggy

0

Existe um arquivo 'LaunchScreen.xib' adicionado automaticamente ao seu projeto. Excluir isso mudará o xCode para o uso das imagens padrão em Images.xcassets

editado para adicionar, vá para Ícones de aplicativos e Imagens de inicialização O arquivo de tela de inicialização deve estar em branco / vazio


0

Eu tive um bug muito estranho. Aparentemente, minha fonte de imagem de inicialização foi definida apenas para configuração de depuração e não para liberação. Isso resultou na exibição da minha tela de inicialização ao executar a configuração de depuração, mas quando mudei para o release, obtive uma tela preta.

Corrigi isso quando alterei minha configuração de compilação para liberar o botão Iniciar origem da imagem que apareceu e tive que escolher Usar catálogo de ativos novamente.

Para quem está curioso, é assim que meu projeto.pbxproj se parece.

...
...
...
XXXXXXXXXXXXXXXXXXXXXXXX /* Release */ = {
            isa = XCBuildConfiguration;
            buildSettings = {
                ALWAYS_SEARCH_USER_PATHS = NO;
                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
                ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; <---THIS LINE WAS MISSING
...
...
...

0

Por algum motivo, tive que alterar o local do catálogo de ativos para "relativo ao projeto" para que isso funcionasse.

Eu também havia excluído o aplicativo do meu telefone e reinstalado, mas provavelmente foi o "parente do projeto" que o fez.


0

* (Xcode 7.2 / Destino de implantação 7.0 / Somente orientação paisagem) *

Eu sei que é uma pergunta antiga, mas com o Xcode 7.2 eu ainda estou recebendo a mensagem e resolvi isso:

1) Selecione RETRATO e ambas as paisagens. Adicione "Iniciar fonte de imagens" e "Iniciar arquivo de tela"

insira a descrição da imagem aqui

2) Na sua imagem de inicialização, selecione o iPhone "8.0 and Later" e "7.0 and Later".

insira a descrição da imagem aqui

3) Adicione este código no seu aplicativo

#if __IPHONE_OS_VERSION_MAX_ALLOWED < 90000
- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}
#else
- (UIInterfaceOrientationMask)application:(UIApplication *)application     supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    return (UIInterfaceOrientationMaskLandscape);
}
#endif

4) Adicione isso ao seu ViewController

#if __IPHONE_OS_VERSION_MAX_ALLOWED < 90000
- (NSUInteger)supportedInterfaceOrientations
#else
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
#endif
{
     return UIInterfaceOrientationMaskLandscape;
}

Espero ajudar alguém.


Tentei algo semelhante, mas não funcionou: stackoverflow.com/questions/43168145/… Alguma idéia do porquê? Muito obrigado.
Vaddadi Kartick

1
Esse deve ser um dos FU's mais irritantes do desenvolvimento do Xcode. Aparentemente, existem tão poucas coisas a serem definidas, e, no entanto, todo projeto que eu crio nesta pequena fera ocupa muito tempo. Cada vez que resolvo isso, parece aleatório e, uma vez que está funcionando, rezo para não tocar acidentalmente nesse arquivo / processo novamente. Novo projeto, a mesma loucura precisa descobrir por que um gráfico simplesmente no meio da tela de lançamento. O storyboard não está aparecendo. Todas as configurações são de acordo com os requisitos, mas talvez a fase da lua esteja errada?
chamou ..

0

Isso é trabalhado para mim. Clique em LaunchScreen.storyboard e, no painel direito, você pode selecionar a caixa de seleção "Is Initial View Controller".

LaunchScreen.storyboard -> É o controlador de exibição inicial


0

Eu acabei de descobrir isso. Minha imagem de inicialização não estava aparecendo, eu recebo uma tela branca ao iniciar em um dispositivo (iPhone 6, 7+) ou testFlight. Correção: renomeou "Landing_screen.png" para apenas "Landing_screen" removendo a parte .png. O ícone da imagem no Xcode mudou para o ícone branco e no storyboard da tela de lançamento, a imagem aparece como um ponto de interrogação agora. A imagem Iniciar agora aparece e não a tela branca. Minha instalação: estou usando o Swift 3.1 com o Xcode 8.3.1. No LaunchScreen.storyboard, adicionei uma visualização de imagem simples e estiquei a imagem para caber no controlador de visualização. Defino as restrições de layout automático Espaço superior / inferior / à esquerda / à direita como superview para 0.


0

Se você alterou sua imagem de inicialização de uma imagem anterior, e observe o seguinte:

  • os dispositivos / simuladores em que o aplicativo foi instalado anteriormente, ainda mostram a imagem anterior e se recusam a mostrar a nova (desinstalar e reinstalar o aplicativo não ajuda)
  • dispositivos / simuladores em que o aplicativo não foi instalado anteriormente, mostre a nova imagem de inicialização

Provavelmente, devido ao cache da imagem de inicialização feita pelo iOS. Reiniciar o dispositivo deve resolver o problema.


0

Eu encontrei esse bug também no meu aplicativo somente paisagem. A seguinte solução de carlodurso funciona:

  1. marque a caixa "Paisagem"
  2. arraste e solte a imagem no local.

-2

Para mim, funciona quando removo LaunchScreen.xibe altero para um arquivo de storyboard LaunchScreen.storyboard.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.