Écran noir au lieu de lancer l'image sur iPad

Je développe une application iPhone pour iOS 6.1 et 7 (en utilisant Xcode 5). J'ai un problème avec les images de lancement de l'iPad.

Sur l'iPad 7.0 et 7.0.2, l'image de lancement n'apparaît pas (en 6.1 fonctionne!): J'obtiens un écran noir pendant le chargement de l'application.

Je ne suis pas confronté à ce problème avec iPhone 6.1 et 7.0.2, même si j'ai défini toutes les images de lancement requirejses pour iPad et iPad retina (paysage et portrait) et j'utilise Asset Catalog.

Qu'est-ce que je rate?

Récemment, j'ai rencontré le même problème avec mon application conçue uniquement pour iPhone, j'ai eu le problème où les images de lancement n'apparaîtraient pas dans l'iPad (Sur iPad ios> = 7.0.x l'image de lancement ne s'affiche pas (dans l'ios d'iPad <7.0.x cela fonctionne bien)).

Je ne suis pas confronté à ce problème de lancement de l'image avec l'iPhone a bien fonctionné dans toutes les versions iOS.

Solution : consiste à mettre à jour le catalogue d'actifs pour gérer les images de votre application et cibler uniquement iOS 6 et Prior.

Pas :

Étape 1:

Mise à jour du catalogue d'actifs

Étape 2:

Sélectionnez pour migrer

Étape 3: dans le coin en haut à droite, click l'icône "Atsortingbute Inspector". Ici vous pouvez définir le operating system cible pour les images de lancement.

Décochez les cases iOS 7 pour iPhone

Désactivez les cases à cocher iOS 7 pour iPhone. Vous devriez maintenant pouvoir voir les images de lancement pour iPad sur iOS> = 7.0.x.

Si vous avez la même situation que la mienne, c'est la solution:

Mon application est en mode paysage uniquement, iOs7 uniquement, ipad \ iphone (XCode 5).

Problème: lancement en noir sur iphone (et simulateur), lancement normal en ipad.

Solution : allez à Images.xcassets – Lancer des images – select-le. Décochez à droite toutes les cases "iOs7 et plus" . Cochez les cases "iOs6 et antérieures" et remplissez les espaces vides avec des images.

Étrange, mais fonctionne.

Par la documentation d'Apple ( lien ); un storyboard spécifique à l'iPad vide peut être la réponse. J'ai également vu des problèmes où le controller de vue initial n'est pas défini dans un storyboard provoque un écran noir. Une variante de ce problème peut être un paramètre incorrect dans l'application plist.

Questions et réponses techniques QA1780 Pourquoi mon application est-elle lancée sur un écran noir sur iPad?

Q: Pourquoi mon application se lance-t-elle sur un écran noir sur iPad?

R: Les applications qui ont été conçues uniquement pour l'iPhone peuvent être lancées sur un écran vide lorsqu'elles sont exécutées sur un iPad. Cela est dû à la présence d'un storyboard spécifique à l'iPad vide dans l'set de l'application, ainsi que d'une key UIMainStoryboardFile spécifique à l'iPad dans le file Information Property List (Info.plist) de l'application. Les deux sont automatiquement créés par les différents projets de templates Xcode si l'option Universel est sélectionnée.

Dans Xcode

Recherchez un file nommé MainStoryboard_iPad.storyboard dans le browser de files. Si ce file est présent, supprimez-le de votre projet.

Dans la list des propriétés d'informations de votre application

Recherchez une key nommée nom de base du file de storyboard principal (iPad) ou UIMainStoryboardFile ~ ipad. Si cette key est présente, supprimez-la. Vous devez également supprimer toute autre key suffixée avec (iPad) ou ~ ipad.

Enfin, testez votre application sur un iPad ou sur le simulateur d'iPad et vérifiez qu'elle se comporte comme prévu.

J'ai demandé le support d'Apple et il s'est avéré que c'est un bug. Ils m'ont demandé de le signaler et je l'ai fait. Voici l'identifiant du rapport: 15340531. Maintenant, c'est à eux de décider.

Essayez de définir à nouveau l'image assurez-vous que la résolution de l'écran de démarrage est conforme aux directives iOS 7

Utilisation de LaunchScreen.storyboard

J'ai eu un problème similaire jusqu'à ce que j'ai trouvé les parameters suivants dans les parameters généraux du projet .

  1. Définissez votre interface principale sur votre file de storyboard principal. Le mien s'appelle Main.storyboard .

entrez la description de l'image ici

  1. Définissez votre file d'écran de lancement sur votre file de storyboard d'écran de lancement. Le mien s'appelle LaunchScreen.storyboard . (C'est ce que j'avais à l'origine écrit.)

entrez la description de l'image ici

Après cela, l'écran de lancement a été chargé en premier, puis le story-board principal a été chargé peu de time après.

Je sais que cela semble stupide. J'ai eu des bugs comme ça quand j'ai enregistré un file au format psd avec une extension jpg. Juste 1 mauvais clic tout en sauvegardant votre image de lancement.

Après avoir essayé plusieurs solutions trouvées ici, je soupçonnais que l'iPhone essayait de lancer en orientation Paysage, et ne trouvant donc aucune image de lancement correspondante. En effet, le simulateur commençait dans Landscape pour une raison que je ne comprenais pas.

Enfin, après avoir lu la documentation Apple, j'ai trouvé que c'est probablement l'ordre des keys dans "Orientations d'interface supscopes" du file info.plist qui n'était pas adéquat. Le Portrait était le dernier object. Lorsque c'est le premier élément, l'application se lance en mode portrait et trouve l'image.

Retirez l'application précédemment installée de l'appareil ou du simulateur, puis relancez l'application après nettoyage.

J'ai eu le problème où les images de lancement n'apparaîtraient pas dans l'iPhone (3,5 ou 4 pouces) dans iOS 7, mais l'iPad n'a eu aucun problème avec iOS 7.

Longue histoire courte, j'ai désactivé le catalogue des actifs pour les images de lancement seulement. J'ajoute donc les images de lancement à l'ancienne. Cela semble avoir résolu le problème.

Je vais devoir faire plus de tests demain, mais il semble que le problème soit résolu (du less dans mon cas).

entrez la description de l'image ici

Dans Xcode 5, assurez-vous que vous ajoutez toutes les images nécessaires mentionnées dans la cible de votre application.

Je suppose que lorsque vous utilisez le catalogue d'actifs, vous avez veillé à ce que l'appartenance à la cible Images.xcassets soit correctement ajoutée. Je mentionne ceci puisque si vous avez plusieurs cibles, il semble que vous deviez les append manuellement (et vous n'avez fourni aucune capture d'écran, donc on peut être sûr).

Maintenant que vous n'avez pas vraiment fourni une capture d'écran de la vue d'set "LaunchImage" du dossier Images.xcassets dans votre projet, je ne peux que deviner la raison probable. En regardant le fait que les images de lancement fonctionnent bien pour iPhone (6.1 et 7.0.2 et iPad (6.1) et ne fonctionnent pas seulement pour iPad (7.0 et plus), je pense que vous pourriez peut-être voir si la dimension de la Les images pour iPad Portrait et iPad sont propres à iOS 7. Plus précisément, vous devriez voir vos images de lancement et non des rectangles vides, comme le montre la photo ci-jointe. Images de lancement iPad iOS7 (portrait et paysage) - pas correctement dimensionné

Cela peut se produire en raison du fait que vous avez toujours l'iPad lancer des images pour iOS7 créé en excluant la zone de la barre d'état. Avant iOS7, les images de lancement de l'iPad ont été créées pour exclure la zone de la barre d'état, mais il est indispensable sur iOS7 que toutes les images de lancement doivent inclure la zone de la barre d'état. Veuillez passer par la section "Choses que chaque application doit faire" dans le Guide de transition de l'interface user Apple iOS 7 ( https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/TransitionGuide.pdf ).

La capture d'écran suivante devrait expliquer de quoi je parle … iPad lancer des images dimensions - iOS6 et iOS7

Par exemple, vous pouvez voir que la dimension de l'image iPad Paysage Retina pour iOS6.1 et précédent est 2048×1496 (40 px pour la barre d'état), mais la taille de la même image pour iOS7.0 et au-dessus devrait être 2048×1536 (y compris les 40px bar). Donc, si vous n'avez pas changé vos images en conséquence, vous verrez un écran noir pour les images sur l'iPad 7.0 et plus. Sur les iPhones, vous ne rencontrerez pas ce problème puisque les images de lancement de l'iPhone couvrent toujours la barre d'état, que ce soit iOS6.0 ou iOS7.0, de sorte que la nouvelle exigence d'interface user est déjà respectée pour les images de lancement iPhone.

J'ai trouvé cette réponse qui a fonctionné pour notre application (iPhone seulement, mais utilisé sur iPad): https://stackoverflow.com/a/19448782/1258419

Pour résumer de cette réponse:

Comment faire. Accédez au catalogue d'actifs. Et dans le coin en haut à droite, click l'icône "Atsortingbute Inspector". Ici vous pouvez définir le operating system cible pour les images de lancement. Décochez les cases iOS 7 pour iPhone. Vous devriez maintenant être en mesure de voir les images de lancement de ces appareils.

J'ai rencontré un problème similaire dans le paysage, mon image de lancement iOS 7 n'a pas été affichée alors que l'iOS 6 l'a fait. Le mien était l'image de lancement iPhone Retina 3.5 ".

Depuis que j'ai une autre application en portrait qui n'a pas partagé ce problème, j'ai fait 2 choses:

  1. Dans info.plist, sous "Orientations d'interface supscopes", j'ai ajouté les 2 modes portrait, et les ai placés avant le paysage, comme ceci:

     Item 0: Portrait (top home button) Item 1: Portrait (bottom home button) Item 2: Landscape (right home button) Item 3: Landscape (left home button) 
  2. Implémenté cette méthode dans le View Controller:

     -(NSUInteger)supportedInterfaceOrientations{ return UIInterfaceOrientationMaskLandscape; 

    }

Cela fonctionne avec ou sans le catalogue d'actifs.

Ceci est une mise à jour pour iOS 8.

J'ai eu le même problème lorsque j'ai essayé d'append un LaunchImage à mon application iOS 8.

Apple permet aux développeurs d'utiliser un xib, dont le nom par défaut est LaunchScreen.xib , pour afficher la vue de lancement depuis iOS 8. Je crois que les développeurs peuvent utiliser LaunchImage ou LaunchScreen.xib . Malheureusement, je n'ai trouvé aucun document décrivant comment traiter LaunchImage après l'introduction de LaunchScreen.xib . J'ai toujours eu un écran noir lorsque j'ai essayé d'utiliser LaunchImage comme vue de lancement.

Ma solution est:

  1. Ne pensez pas à LaunchImage . Utilisez LaunchScreen.xib . (Vous devez cependant conserver une image LaunchImage vide dans votre catalogue d'éléments, mais je crois que c'est un bug.)

  2. Faites glisser un UIImageView sur le xib et faites le UIImageView plein écran. N'oubliez pas de prendre en count les classs de taille et les contraintes.

  3. Définissez une image dont la résolution est suffisante pour l'iPhone 6 plus sur l' UIImageView .

Vérifiez toutes vos images et voyez si elles sont correctement placées dans l'asset et correctement nommées et classées.

Vérifiez également les orientations que vous autorisez et, par conséquent, ajoutez des images à l'élément.

J'ai eu le même problème. J'ai dû faire une solution de contournement: utilisé l'image par défaut pour toutes les versions iOS et supprimé la key UILaunchImageFile d'info.plist.

Je ne peux pas utiliser différentes images de lancement pour iOS 7 et les versions précédentes, donc j'ai dû utiliser la même image "artistique" pour tous, à la place une image qui imite la première vue de l'application (que Apple recommand et je préfère). less je n'ai plus l'écran noir.

Il semble que la key UILaunchImageFile qui permet d'utiliser différentes images de lancement pour iOS 7 et versions antérieures ne fonctionne pas correctement pour iPad Retina dans iOS 7.

AVERTISSEMENT: Je suis encore en train de tester l'application, donc je ne sais pas si cela pourrait être des effets secondaires.