Estou usando o Catálogo de Ativos do Xcode 5 e gostaria de usá-lo LaunchImage
como imagem de fundo de minha visualização inicial (uma prática bastante comum para fazer a transição de 'carregando' para 'carregado' parecer suave).
Gostaria de usar a mesma entrada no Catálogo de ativos para economizar espaço e não ter que replicar a imagem em dois conjuntos de imagens diferentes.
No entanto, ligando para:
UIImage *image = [UIImage imageNamed:@"LaunchImage"]; //returns nil
fonte
UIInterfaceOrientationIsLandscape()
lugar.Os LaunchImages são especiais e não são realmente um catálogo de ativos no dispositivo. Se você olhar usando iFunBox / iExplorer / etc (ou no simulador, ou no diretório de compilação), você pode ver os nomes finais e escrever o código para usá-los - por exemplo. para um projeto apenas para iPhone apenas iOS7, isso definirá a imagem de inicialização certa:
Coloquei isso em viewDidLoad.
Isso não é realmente ideal, seria ótimo se a Apple nos desse uma boa API para fazer isso.
fonte
Meu aplicativo atualmente suporta apenas iOS 7 e posterior.
É assim que faço referência à imagem de lançamento do catálogo de ativos:
Você pode adicionar mais pares de valores-chave se quiser oferecer suporte a versões mais antigas do iOS.
fonte
UIScreen.mainScreen.bounds
é diferente dependendo da orientação atual da interface. Consulte stackoverflow.com/a/24153540/158525Aqui está uma categoria no UIImage baseada na solução fornecida por Cherpak Evgeny acima.
UIImage + SplashImage.h :
UIImage + SplashImage.m :
fonte
Resposta de @ codeman atualizada para Swift 1.2:
Para chamá-lo e apoiar a rotação para iOS 8:
Exatamente o que eu precisava, obrigado!
fonte
Acabei de escrever um método geral para obter o nome da imagem inicial para iPhone e iPad (paisagem, retrato), funcionou para mim, espero que ajude você também. Escrevi isso com a ajuda de outras respostas do SO, obrigado @Pichirichi pela lista completa.
Outros métodos utilitários são
fonte
[screen.coordinateSpace convertRect:screen.bounds toCoordinateSpace:screen.fixedCoordinateSpace]
mas faça certifique-se de testar se você está no iOS 8 primeiro, caso contrário, ele travará.Versão rápida da resposta de Cherpak Evgeny:
fonte
Seguindo a resposta de @Pichirich, referenciei minha imagem de lançamento no InterfaceBuilder como:
"LaunchImage.png"
... e com o Xcode 5.0.2, ele está retirando automaticamente a imagem apropriada diretamente do Catálogo de ativos.
Isso é o que eu esperava - exceto pelo movimento cruelmente desagradável da Apple de silenciosamente renomear "Default.png" para "LaunchImage.png" :)
fonte
nil
após a inicializaçãoNa documentação está claramente indicado:
"Cada conjunto em um catálogo de ativos tem um nome . Você pode usar esse nome para carregar programaticamente qualquer imagem individual contida no conjunto. Para carregar uma imagem, chame o método UIImage: ImageNamed : , passando o nome do conjunto que contém a imagem . "
Usar a lista de Pichirichi ajuda a resolver essa inconsistência.
fonte
UIImageView *myView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"LaunchImage"]];
Funciona muito bem![UIImage imageNamed:..]
saberia qual escolher?Pode-se acessar facilmente a imagem do Launch por uma linha de código.
Siga as etapas fornecidas abaixo para obter a funcionalidade descrita acima.
Etapa 1. Estenda a
UIImage
classe criando uma categoria e adicione o método a seguir a ela.Etapa 2. O método acima deve funcionar adicionando o código a seguir também na mesma categoria de
UIImage
fonte
Sei que essa não é necessariamente a melhor solução para todos, mas a maneira mais fácil (e menos propensa a erros, IMHO) de fazer isso é fazendo uma entrada separada em seu catálogo Images.xcassets. Eu chamei
SplashImage
.Quando for adicionar uma nova entrada, certifique-se de não selecionar "Nova imagem de inicialização" como uma opção. Em vez disso, selecione o genérico "Novo conjunto de imagens". Em seguida, abra o inspetor e selecione as opções relevantes. Se você estiver construindo apenas para dispositivos de retina, como eu, você pode selecionar o seguinte:
Isso deixará você com quatro entradas (iPhone 4S, iPhone 5 (s, c), iPhone 6 e iPhone 6 Plus).
Os arquivos correspondentes às imagens são os seguintes:
Claro, depois de fazer isso, você pode simplesmente usar
[UIImage imageNamed:@"SplashImage"]
fonte
Com a ajuda da resposta de Pichirichi, implementei a seguinte categoria (iOS 7 +): UIImage + AssetLaunchImage
Na verdade, é pouco mais do que gerar nomes instantaneamente, mas provavelmente será útil.
fonte
Atualizado para a sintaxe Swift mais recente (Swift 5)
fonte