web-dev-qa-db-fra.com

Lancer l'image ne s'affiche pas dans mon application iOS

Je souhaite obtenir un écran de lancement simple à afficher dans mon application, construit à l'aide de Xcode 6.0.1.

J'ai ajouté un écran de lancement de deux manières: en tant que XIB (avec le nom par défaut, LaunchScreen.xib) et en tant qu'image de lancement définie dans xcassets.

Je me suis assuré que mon "fichier d'écran de lancement" est défini sur LaunchScreen.xib.

J'ai simulé tous les appareils disponibles (par exemple, "iPhone5 iOS8"/"iPhone5s iOS8"/"iPhone6 ​​iOS8". Notez que seul iOS 8 est disponible dans le simulateur).

144
Eddie Hartman

Donc, cela a été assez pénible pour quelque chose qui devrait être trivial. Voici ce que j'ai fait:

Utilisez xcassets

J'ai décidé d'utiliser .xcassets par rapport au .xib pour le lancement. J'ai supprimé le .xib. Si vous avez déjà des images.xCassets dans votre projet, c'est très bien, sinon vous pouvez en ajouter un à partir de Fichier> Nouveau> fichier:

AddNewASsetCatalog

Créer un ensemble d'images de lancement

Maintenant, créez au minimum un jeu d'images de lancement et un jeu d'icônes dans votre fichier .xcassets en cliquant avec le bouton droit de la souris dans la zone du navigateur.

Add new Launch image and app icon

Mettez à jour les icônes de l'application et lancez les paramètres des images

Ensuite, je me suis assuré que "les applications icône et jeux d'images" dans ma cible sont comme ci-dessous.

Très important: Assurez-vous que le paramètre "Fichier de l'écran de démarrage" est vide.

Apps icon and image sets

Ajoutez les images

Dernier point mais non le moindre, la terminologie utilisée par Apple pour la sélection de périphérique est source de confusion. Au départ, je pensais que puisque je ne déployais que pour iOS8 (iPhone Portrait), je pouvais le faire et mettre tout simplement dans l'image de lancement de l'iPhone 6 et de l'iPhone 6+:

Devices

Je me suis vite rendu compte que ce n’était pas ainsi que cela fonctionnait et je recevais un avertissement: "Une image de lancement pour iPhone Retina (4 pouces) pour iOS 7.0 et versions ultérieures est requise".

J'ai donc dû sélectionner l'iPhone sous iOS 7.0 et versions ultérieures et ajouter une image pour l'iPhone 5s.

Donc, pour savoir quelles cases vérifier à droite, ne posez pas la question: quelle est mon orientation minimale pour iOS et les appareils et appareils, mais plutôt:

Quels appareils peuvent prendre en charge mon minimum iOS? Maintenant Quel est le minimum iOS pris en charge sur ces appareils? Et assurez-vous de cocher toutes ces cases. Donc, pour moi, je cible les iPhone 5, 6 et 6 Plus à 8.0, mais étant donné que l'iPhone 5 peut exister avec la version 7.0, je dois également cocher la case 7.0 pour afficher l'espace réservé à l'image. En d'autres termes, la case à cocher (iOS) à droite indique la version minimale iOS disponible pour ce périphérique et vous devez cliquer dessus pour afficher l'espace réservé pour l'image et placer une image, que vous déployiez cette version iOS ou non. .

J'espère que ça aide quelqu'un.

Adding all devices

enter image description here

235
Khaled Barazi

Le LaunchScreen.xib et la valeur d'info Launch screen interface file base name sont, d'après mon expérience, les deux espaces réservés créés lors de la création du projet. Si vous souhaitez utiliser le Images.xcassets exclusivement pour vos écrans de lancement, supprimez les éléments LaunchScreen.xib et info.plist.

Si vous fournissez le paramètre info.plist, votre application utilisera le xib et non votre Images.xcassets.

31
arcady bob

Xcode 8:

Les images utilisées dans LaunchScreen.xib ne devrait pas l'être sur un .xcassets, essayez de les déposer dans le lot.

On dirait que, au moment où le fichier .xib est chargé, les images des fichiers .xcassets ne sont pas encore disponibles.

EDIT: pour une raison quelconque, après l’ajout de certaines localisations, l’écran de démarrage a cessé de fonctionner; il fonctionne désormais avec une image des ressources, extrêmement étrange.

19
Juan Boero

Ma solution était de créer toutes les images de lancement. enter image description here

Ensuite, je règle la source d'images de lancement sur la ressource LaunchImage et laisse le fichier de l'écran de lancement vide.

Enfin, si le projet ne possède pas de fichier Launch Screen.xib, ajoutez ce fichier et laissez-le tel quel. enter image description here

16
Andre Dublin

Pour moi, cela a fonctionné lorsque j'ai désinstallé l'application, puis redémarré le simulateur. Une fois installé à nouveau, l'image de lancement est apparue comme prévu. Cela a également fonctionné sur un appareil réel.

12
Sushant Shidore

Pour les personnes qui utilisent le Asset Catalog's Launch Image, comme je l’ai appris de la manière la plus difficile, j’ai eu ce scénario dans lequel j’ai reçu un fichier jpg puis je l’ai demandé de le convertir en PNG.

Je leur ai fait suffisamment confiance pour parcourir d’abord sur Internet les raisons pour lesquelles l’image de lancement n’apparaissait pas et j’ai fait toutes les solutions en vain, puis j’ai essayé de remettre la vieille image de lancement et je fonctionnais bien. C’est là que j’ai pensé have n’est pas un fichier PNG correct.

TL; DR: Assurez-vous que vous utilisez bien un fichier PNG approprié, pas un fichier avec une extension renommée.

11
Bryan P

Supprimer le nom de base du fichier d'interface de l'écran de démarrage du fichier Info.plist ET supprimer "Lancer Screen.xib" ont fonctionné pour moi.

10

Simplement supprimer et réinstaller l'application a fonctionné pour moi:

  • Test dans le simulateur

    1. Supprimer l'application dans le simulateur.
    2. Quittez et redémarrez le simulateur.
    3. Exécutez le projet à nouveau dans Xcode.

  • Test sur l'appareil

    1. Supprimer l'application de l'appareil.
    2. Exécutez le projet à nouveau dans Xcode.
6
extra vertex

Le problème avec la réponse acceptée est que si vous ne définissez pas le fichier d'écran de lancement, votre application passera en mode de redimensionnement sur des appareils tels que l'iPhone 6 & 6+ => rendu flou.

Voici ce que j'ai fait pour avoir une solution complète et efficace (je cible iOS 7.1 et Xcode 8) sur chaque appareil (vraiment, je commençais à être folle de ce problème de montée en gamme)

1. Préparez vos .xcassets

Pour simplifier, j'utilise un fichier .PDF vectoriel. C'est très pratique et évitez de créer plusieurs images pour chaque résolution (1x, 2x, 3x ...). Je suppose aussi que vous avez déjà créé vos xcassets.

  • Ajoutez votre image d'écran de lancement (ou fichier vectoriel) à votre projet
  • Accédez à vos .xcassets et créez un nouvel ensemble d’images . Dans la fenêtre Attributs de l’image, sélectionnez Échelles -> Échelle unique
  • Faites glisser et déposez le fichier vectoriel dans le jeu d'images.

Create an Image Set for your .xcassets

2. Créez votre fichier d'écran de lancement

Create a Launch Screen file

3. Ajoutez votre image à votre fichier d'écran de lancement

  • Ajoutez un objet Image à votre fichier d'écran de lancement (supprimez les étiquettes créées automatiquement). Cette vue d'image doit faire référence à la précédente . Xcassets Image Set . Vous pouvez le référencer à partir de l'attribut Name . A ce stade, vous devriez voir correctement l'image de votre écran de lancement dans votre vue d'image.
  • Ajoutez des contraintes à cette image pour conserver les proportions en fonction de la résolution de l'écran.

Add the splash screen image to your Launch Screen file

4. Ajoutez votre fichier d'écran de lancement à votre cible

Enfin, dans les propriétés générales de votre cible, reportez-vous au fichier d’écran de lancement. Target Properties and Launch Screen

Démarrez votre application et votre écran de démarrage devrait être affiché. Essayez également sur iPhone6 ​​et iPhone6 ​​+, et votre application devrait être correctement affichée sans aucune conversion ascendante (le fichier Écran de lancement a pour but de faire cela).

6
hico

Après plusieurs heures de frustration à ce sujet, j'ai décidé d'utiliser cette méthode. Cela fonctionne pour iPhone et iPad (sur Xcode 6.1)

  1. Fichier >> Nouveau fichier >> Interface utilisateur >> Ecran de lancement
  2. Créez une nouvelle clé/valeur: "Nom de base du fichier d'interface de l'écran de démarrage"/"Votre nom de l'écran de lancement" dans YourApp-Info.plist

1 image vaut plus que mille mots. Veuillez regarder ci-dessous:

File>>New File>> User Interface >> Launch Screen

Create new key/value "Launch screen interface file base name"/"Your Launch Screen Name" in YourApp-Info.plist

5
vanloi999

J'ai lu un bogue dans Xcode 6 qui empêche l'affichage d'applications de paysage uniquement.

Essayez de définir les images et l'orientation dans Images.xcassets:

Xcode screenshot of Images.xcassets

4
carlodurso

Il existe un bogue dans lequel les images de lancement Xcode 6 stockées dans des fichiers d'actifs font que les applications iPhone paysage uniquement sur iOS7/iOS8 affichent une image de lancement noire. iPad fonctionne bien.

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

Solution: utilisez le nouveau fichier Launchscreen.xib pour ios8 +. (c'est beaucoup mieux)

Pour que les appareils ios7 fonctionnent, vous devez simplement désactiver la source des images de lancement et utiliser les noms de fichier des images de lancement de l'ancienne école dans la fenêtre de présentation.

iphone5 - [email protected] 
iphone4s - [email protected]
ipad2 - Default-Landscape~ipad.png
ipad retina - Default-Landscape@2x~ipad.png

Douloureux mais ça marche. B
enter image description here

2
Brett

J'ai tout essayé mais la solution était extrêmement simple. Utilisez simplement un fichier .jpg au lieu de .png sur votre LaunchScreen.storyboard. Il semble qu'iOS ne rende pas le fichier .png ou la taille d'image relativement grande à l'écran de lancement.

2
bpolat

Faites ce que Spectravideo328 a répondu et:

Essayez de décocher la case iOS 7 et versions ultérieures et de cocher la case iOS 6 et les versions antérieures du catalogue d’actifs. Il semble y avoir un bogue avec l’image de lancement iOS 7. (Ces deux images ont les mêmes images de lancement, à l'exception de celle au format 320x480)

J'espère que ça aide, ça m'a aidé!

2
XcodeGuy

J'ai configuré "LaunchImage" dans mon catalogue d'actifs et j'ai tout simplement effacé le champ "Écran de lancement" et le tour est joué! J'ai eu les images de lancement apparaissent ...

1
Mohit Athwani
  • Assurez-vous que la taille de vos images est conforme aux instructions de Apple.
  • Assurez-vous que vous ne sélectionnerez qu'une seule option, soit lancer le fichier d'écran ou lancer Image Source. Vous pouvez trouver ces deux options dans les paramètres de construction du projet -> Général

Ma suggestion est de sélectionner Lancer la source d’image en tant qu’Image.Assets. Créez des ressources d’image splash dans le dossier Image.assests.

Image de référence pour une configuration correcte: enter image description here

1
iDevAmit

J'ai eu le même problème après avoir commencé à utiliser Xcode 6.1 et modifié mes images de lanceur. J'ai eu toutes les images dans un catalogue d'actifs. Je n'aurais qu'un écran noir au lieu de l'image statique attendue. Après avoir essayé tant de choses, je me suis rendu compte que le problème était que le catalogue "Actif cible" du projet était coché dans sa vue FileInspector. Cochez cette case pour activer la magie et l'image a commencé à apparaître au lancement de l'application.

1
ficocons

Une façon consiste à ajouter également "Écran de lancement" (LaunchScreen.xib), collez l'image dans UIImageView, puis définissez-la sur " Centre horizontal dans le conteneur " et " Centre vertical dans le conteneur " dans "Aligner" si vous utilisez la disposition automatique.

Écran: http://i.stack.imgur.com/CfnHT.png

N'oubliez pas de mettre LaunchScreen.xib dans "Lancer le fichier d'écran".

1
Jiri Svec

J'ai rencontré ce bug également avec mon application paysage uniquement. Suivre la solution de carlodurso fonctionne:

  1. cochez la case "Paysage"
  2. glissez et déposez l'image à l'endroit.
0
Bill Chan

Pour une raison quelconque, j'ai dû modifier l'emplacement du catalogue d'actifs en "relatif au projet" pour que cela fonctionne.

J'avais également supprimé l'application de mon téléphone et réinstallée, mais c'était probablement le "relatif au projet" qui l'avait fait.

0
Michael James

Il existe un fichier 'LaunchScreen.xib' ajouté automatiquement à votre projet. Cette suppression entraînera le passage de xCode à l'utilisation de vos images par défaut dans Images.xcassets.

édité pour ajouter aller à l'icône d'application et au lancement des images

0
Linda MacPhee-Cobb

J'ai eu un bug très étrange. Apparemment, ma source d’image de lancement n’était définie que pour la configuration de débogage et non pour la publication. Cela a entraîné l'affichage de mon écran de lancement lors de l'exécution de la configuration de débogage, mais lorsque j'ai changé pour la publication, je n'ai eu qu'un écran noir.

J'ai résolu ce problème lorsque j'ai modifié ma configuration de génération pour libérer le bouton Lancer l'image source et que je devais à nouveau utiliser Utiliser le catalogue d'actifs.

Pour ceux qui sont curieux, voici à quoi ressemblait mon projet.pbxproj.

...
...
...
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
Epic Byte

Je viens de comprendre cela. Mon image de lancement n’apparaissant pas, j’obtiens un écran blanc lors du lancement sur un appareil (iPhone 6, 7+) ou TestFlight. Correction: renommé "Landing_screen.png" en juste "Landing_screen" supprimant la partie .png. L'icône de l'image dans Xcode est devenue une icône blanche et dans le storyboard de l'écran de lancement, l'image apparaît maintenant comme un point d'interrogation. L'image de lancement apparaît maintenant et non l'écran blanc. Ma configuration: J'utilise Swift 3.1 avec Xcode 8.3.1. Dans LaunchScreen.storyboard, j'ai ajouté une simple vue d'image et étiré l'image pour l'adapter au contrôleur de vue. Je règle les contraintes de mise en page automatique Haut/Bas/Début/Fin de la zone supérieure à 0.

0
Brian

J'ai essayé d'ouvrir un nouveau projet et de suivre les mêmes étapes que vous avez définies pour définir un écran de lancement.

Par défaut, le fichier .xib était défini sur "Lancer le fichier d'écran" et l'écran blanc avec une étiquette était affiché pendant une demi-seconde dans le simulateur.

J'ai ensuite un "Lancer Images Source" et réglez-le sur Images.xcassets qui ont généré avec les images d'arrière-plan que j'ai ajouté au projet. (tout va bien jusqu'à présent)

Relancez le simulateur et les images de lancement ne s'affichent pas ...

Après avoir supprimé le "Fichier d'écran de lancement" spécifié et un nettoyage: Produit -> Nettoyer, dans le menu supérieur, les images de lancement apparaissent enfin.

Peut-être que ça va aider?

0
Terrence Giggy

Ceci a fonctionné pour moi. Cliquez sur LaunchScreen.storyboard, puis dans le panneau de droite, cochez la case "Is Initial View Controller".

LaunchScreen.storyboard -> Is Initial View Controller

0

* (Xcode 7.2/Cible de déploiement 7.0/Orientation de paysage uniquement) *

Je sais que c’est une vieille question, mais avec Xcode 7.2, je reçois toujours le message et j’ai résolu ce problème:

1) Sélectionnez PORTRAIT et les deux paysages. Ajouter "Lancer la source d'images" et "Lancer le fichier d'écran"

enter image description here

2) Dans votre image de lancement, sélectionnez l'iPhone "8.0 et versions ultérieures" et "7.0 et versions ultérieures".

enter image description here

3) Ajoutez ce code dans votre appDelegate:

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

4) Ajoutez ceci sur votre ViewController

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

J'espère aider à quelqu'un d'autre.

0
Beto

Si vous avez modifié votre image de lancement à partir d'une image précédente, observez les éléments suivants:

  • les appareils/simulateurs sur lesquels l'application était précédemment installée continuent d'afficher l'image précédente et refusent d'afficher la nouvelle (la désinstallation et la réinstallation de l'application n'aident pas)
  • appareils/simulateurs sur lesquels l'application n'était pas installée précédemment, affiche la nouvelle image de lancement

C'est probablement à cause de la mise en cache de l'image de lancement faite par iOS. Le redémarrage de l'appareil devrait résoudre le problème.

0
auspicious99