web-dev-qa-db-fra.com

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

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

Sur les iPad 7.0 et 7.0.2, l'image de lancement ne s'affiche pas (la version 6.1 fonctionne!): L'écran noir s'affiche pendant le chargement de l'application.

Je ne fais pas face à ce problème avec iPhone 6.1 et 7.0.2, bien que je définisse toutes les images de lancement requises pour iPad et iPad (paysage et portrait) et que j'utilise Asset Catalog. 

Qu'est-ce que je rate?

35
nicky_1525

J'ai demandé l'assistance d'Apple et il s'est avéré que c'était un bug. Ils m'ont demandé de le signaler et je l'ai fait. Voici l’identifiant de rapport: 15340531.

9
nicky_1525

Récemment, j’ai rencontré le même problème avec mon application conçue uniquement pour iPhone; j’ai eu le problème suivant: les images de lancement ne figureraient pas sur iPad (sur iPad ios> = 7.0.x, l’image de lancement ne s'affiche pas. Je reçois un écran noir pendant le chargement de l’application. (dans iPad ios <7.0.x cela fonctionne très bien)). 

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

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

Pas :

Étape 1:

Update to Asset Catalog

Étape 2: 

Select to Migrate

Étape 3: dans le coin supérieur droit, cliquez sur l'icône "Attribute Inspector". Ici, vous pouvez définir le système d'exploitation cible pour les images de lancement.

Uncheck the iOS 7 check boxes for iPhone

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

33
Samyukt Shah

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

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

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

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

Étrange, mais ça marche.

24
djdance

Documentation par Apple ( lien ); un storyboard vide pour iPad peut être la solution. J'ai également rencontré des problèmes pour lesquels le contrôleur de vue initial n'est pas défini dans un storyboard, ce qui provoque un écran noir. Une variante de ce problème peut être un paramètre incorrect dans la liste d'applications.

Questions techniques QA1780 Pourquoi mon application s'ouvre-t-elle sur un écran noir sur iPad?

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

R: Les applications conçues uniquement pour iPhone peuvent se lancer sur un écran vide lorsqu'elles sont exécutées sur un iPad. Ceci est dû à la présence d'un storyboard vide spécifique à l'iPad dans le bundle d'applications, ainsi qu'à une clé UIMainStoryboardFile spécifique à l'iPad dans le fichier de liste de propriétés d'informations (Info.plist) de l'application. Les deux sont automatiquement créés par les différents projets de modèle Xcode si l'option Universel est sélectionnée.

...

En Xcode

Recherchez un fichier nommé MainStoryboard_iPad.storyboard dans le navigateur de fichiers. Si ce fichier est présent, supprimez-le de votre projet.

Dans la liste des propriétés de votre application

Recherchez une clé nommée Nom de base du fichier de scénario principal (iPad) ou UIMainStoryboardFile ~ ipad. Si cette clé est présente, supprimez-la. Vous devez également supprimer toute autre clé suffixée par (iPad) ou ~ ipad.

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

11
Tommie C.

Utilisation de LaunchScreen.storyboard

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

  1. Définissez votre Interface principale sur votre fichier de scénario principal. Le mien s'appelle Main.storyboard.

 enter image description here

  1. Définissez votre fichier d'écran de lancement sur votre fichier de storyboard d'écran de lancement. Le mien s'appelle LaunchScreen.storyboard. (Ceci est ce que j'avais initialement ommited.)

 enter image description here

Après cela, l'écran de lancement s'est chargé en premier, suivi du scénario principal peu de temps après.

5
Suragch

Essayez de redéfinir l'image en vérifiant que la résolution de l'écran de démarrage est conforme aux instructions iOS 7.

4
user2503864

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

Enfin, après avoir lu la documentation Apple, j’ai trouvé que c’était probablement l’ordre des clés dans "Orientations d’interface prises en charge" du fichier info.plist qui n’était pas adéquat. Le portrait était le dernier élément. Lorsqu'il s'agit du premier élément, l'application démarre en mode Portrait et recherche l'image.

3
phbardon

Je sais que cela semble stupide. J'ai eu des bugs comme ça quand j'ai sauvegardé un fichier au format psd avec une extension jpg. Juste 1 faux clic lors de l'enregistrement de votre image de lancement.

3
Jodocus

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

2
Sanjeev sharma

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

En résumé, j’ai désactivé le catalogue d’actifs pour les images de lancement uniquement. J'ajoute donc les images de lancement à l'ancienne. Cela semble avoir résolu le problème.

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

2
Alex M

Ceci est une mise à jour pour iOS 8.

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

Apple permet aux développeurs d’utiliser une xib, dont le nom par défaut est LaunchScreen.xib, pour rendre la vue de lancement à partir d’iOS 8. Je pense 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. (Cependant, vous devez conserver une LaunchImage vide dans votre catalogue d'actifs. Je crois que c'est un bogue.)

  2. Faites glisser une UIImageView sur la xib et rendez la UIImageView en plein écran. N'oubliez pas de prendre en compte les classes de taille et les contraintes.

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

1
Brian

J'ai trouvé cette réponse qui a fonctionné pour notre application (iPhone uniquement, 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 supérieur droit, cliquez sur l'icône "Attribute Inspector". Ici, vous pouvez définir le système d'exploitation cible pour les images de lancement. Décochez les cases iOS 7 pour iPhone. Vous devriez maintenant pouvoir voir les images de lancement de ces appareils.

1
Stephen C

enter image description here

in Xcode 5 , make sure thay you add all needed images mentioned in your app target.

1
PJR

J’ai rencontré un problème similaire en mode paysage, mon image de lancement d’iOS 7 n’a pas été affichée, contrairement à iOS 6. La mienne était l’image de lancement de l’iPhone Retina 3.5 ”.

Depuis que j’ai une autre application en mode portrait qui ne partage pas ce problème, j’ai fait 2 choses:

  1. Dans info.plist, sous «Orientations d'interface prises en charge», j'ai également ajouté les modes portrait 2, et les ai placés avant le paysage, comme suit:

    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 contrôleur de vue:

    -(NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskLandscape; 
    

    }

Cela fonctionne avec ou sans le catalogue d'actifs.

1
Eran Talmor

Je suppose que lorsque vous utilisez Asset Catalog, vous vous êtes assuré que l'appartenance à la cible Images.xcassets était correctement ajoutée. Je le mentionne car si vous avez plusieurs cibles, il semble que vous deviez les ajouter manuellement (et vous n’avez fourni aucune capture d’écran pour en être sûr).

Maintenant que vous n'avez pas vraiment fourni de capture d'écran de la vue d'ensemble "LaunchImage" du dossier Images.xcassets de 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 & 7.0.2 et iPad (6.1) et ne fonctionnent pas uniquement pour iPad (7.0 ou plus)), je pense que vous pourriez peut-être regarder si la dimension de la les images pour iPad Portrait et iPad Landscape sont appropriées pour iOS 7. Plus précisément, vous devriez voir vos images de lancement et non des rectangles vides, comme indiqué dans l'image ci-jointe.iOS7 iPad Launch Images (portrait and landscape)- not correctly sized

Cela peut être dû au fait que vous avez toujours créé les images de lancement de l'iPad pour iOS7 à l'exclusion de la zone de la barre d'état. Avant iOS7, les images de lancement de l'iPad étaient créées pour exclure la zone de la barre d'état. Toutefois, sur iOS7, il est indispensable que toutes les images de lancement incluent la zone de la barre d'état. Consultez la section "Chaque application doit faire" dans le Guide de transition de l'interface utilisateur Apple iOS7 ( https://developer.Apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/TransitionGuide.pdf ).

La capture d'écran suivante devrait expliquer ce dont je parle -iPad launch images dimensions- iOS6 and iOS7

par exemple. vous pouvez voir que la dimension de l'image iPad Landscape Retina pour iOS6.1 et les versions antérieures est de 2048x1496 (à l'exception de 40 px pour la barre d'état), mais que la dimension de la même image pour iOS7.0 et les versions ultérieures est de 2048x1536 (y compris les 40 pixels pour la barre d'état ). Ainsi, si vous n'avez pas modifié vos images en conséquence, un écran noir apparaît pour les images sur iPad 7.0 et plus. Sur les iPhones, vous ne rencontrerez pas ce problème, car les images de lancement de l'iPhone couvrent toujours la barre d'état, que ce soit iOS6.0 ou iOS7.0. La nouvelle interface utilisateur est donc déjà remplie pour les images de lancement de l'iPhone.

1
Subzero

J'ai eu le même problème ... J'ai dû créer une solution de contournement: utiliser l'image par défaut pour toutes les versions d'iOS et SUPPRIMER la clé UILaunchImageFile de info.plist.

Je ne peux pas utiliser différentes images de lancement pour iOS 7 et les versions précédentes. J'ai donc dû utiliser la même image "artistique" pour tous, à la place d'une image imitant la première vue de l'application (recommandée par Apple et que je préfère), mais moins je ne reçois plus l’écran noir.

Il semble que la clé UILaunchImageFile qui permet d’utiliser différentes images de lancement pour iOS 7 et les versions précédentes ne fonctionne pas correctement pour Retina iPad sous iOS 7.

AVERTISSEMENT: je suis toujours en train de tester l'application, donc je ne sais pas s'il pourrait y avoir des effets secondaires.

0
Elga

J'ai également rencontré le même problème, mais sa solution était simple (dans mon cas).

Tout ce que j'ai fait était de suivre - 

1.Ajouter un nouveau fichier (si vous ne l'avez pas ajouté) Launchscreen.storyboard

2.Obtenez une UIViewController, marquez-la en tant que Is Initial View Controller puis ajoutez-y une UIImageView et définissez une image que vous souhaitez afficher lors du lancement de votre application. Assurez-vous de donner cette UIImageView contrainte requise.

3. Allez dans Projet-> Général-> Icônes d'application et images de lancement, puis sélectionnez Launchscreen.storyboard en tant que fichier d'écran de lancement (un menu déroulant apparaîtra à cet effet).

0
Ashutosh Shukla

Vérifiez toutes vos images et voyez si elles sont correctement placées dans l'actif, correctement nommées et dimensionnées.

Vérifiez également les orientations que vous autorisez et ajoutez en conséquence des images à l’actif. 

0
Geekoder