J'ai une application qui prend en charge iOS8 et versions ultérieures, intégrée à Xcode 7 et j'utilise un XIB pour un écran de lancement (je n'ai pas d'images de lancement). La vue contient un seul UILabel avec la version de l'application et 2 UIImageViews avec des images présentes dans Images.xcassets: un logo et une image de démarrage.
L'UILabel et l'image du logo s'affichent correctement lorsque je lance l'application, mais l'image de démarrage ne s'affiche pas si j'exécute l'application sur un iPad Air 2 avec iOS9. J'ai testé sur un Air et un Mini exécutant des simulateurs iOS8 et iOS9 pour iPad 2, iPad Air et iPad Air 2 et l'image apparaît correctement dans tous ceux-ci.
J'ai effectué un dépannage de base pour voir si je pouvais comprendre ce qui se passait, mais je n'ai pas pu le résoudre et la seule différence que je peux voir entre l'image qui fonctionne et celle qui échoue, c'est quand je l'ai ajoutée au les atouts...
Voici un aperçu de ce que je sais:
L'UIImageView pour l'image de démarrage est au bon endroit, à la bonne taille. Je peux le dire parce que j'ai défini sa couleur d'arrière-plan sur vert juste pour être sûr. La vue est là, mais l'image n'apparaît pas. Je suppose donc que la vue n'est pas à blâmer.
Si vous définissez UIImageView pour que l'image de démarrage utilise également l'image du logo, l'image du logo apparaît au bon endroit pour l'affichage. Cela m'amène également à supposer que la vue n'est pas à blâmer.
L'image UII que j'utilise dans la vue de l'image de démarrage est utilisée ailleurs dans l'application et apparaît correctement dans ces autres vues (l'image du logo est également utilisée ailleurs dans l'application et semble correcte). Je suppose donc que l'image est valide et qu'elle apparaît dans d'autres vues n'est pas un problème.
J'ai confirmé que les paramètres des UIImages pour le logo et le splash dans le fichier xcassets sont les mêmes. Ils sont définis sur Universel, N'importe quelle largeur et hauteur, plusieurs facteurs d'échelle, rendus par défaut. Il y a une différence - le logo a des échelles 1x, 2x et 3x tandis que l'image de démarrage n'a que 1x et 2x, mais j'ai également essayé d'utiliser des images UII avec seulement des valeurs 1x et 1x et 2x dans UIView et elles fonctionnent (si elles étaient ajouté au projet il y a quelque temps).
L'ajout d'une autre image d'une taille ou d'un format différent (PNG et JPG) à mes xcassets et l'utilisation de cet UIImage dans l'UIImageView pour l'image de démarrage ne parviennent pas non plus à s'afficher.
Ajouter un autre UIImageView au fichier XIB et lui allouer un UIImage qui était déjà dans les travaux xcassets, l'image apparaît dans l'écran de chargement.
Copier et renommer les fichiers image utilisés pour le logo et les ajouter au projet, puis utiliser cet UIImage dans la vue de démarrage ne s'affiche pas non plus.
J'ai essayé de nettoyer le projet, de redémarrer la machine de développement, de supprimer l'application de l'Air 2 et de la réinstaller juste au cas où cela poserait un problème.
Ces trois dernières étapes m'amènent à croire qu'il y a un problème avec les images ajoutées après un certain point dans la durée de vie du fichier de projet. Hier, alors que je mettais à jour Xcode 7, l'image de démarrage a été ajoutée à l'origine dans Xcode 6, mais l'image du logo (également ajoutée dans Xcode 6) a été ajoutée quelques mois auparavant.
J'ai regardé les fichiers json pour l'image du logo et l'image de démarrage et ils semblent avoir le même format. J'ai également parcouru le fichier pbxproj à la recherche de différences et je n'en vois aucune.
Je me demandais donc si quelqu'un savait pourquoi l'écran de lancement pourrait ne pas afficher ces nouvelles images que j'ajoute spécifiquement sur l'Air 2? Les autres questions que j'ai lues concernant les images n'apparaissant pas semblent toutes se rapporter soit à Launch Images, soit à des images dans des fichiers XIB qui ont des classes associées, aucune des deux ne semble pertinente ici.
Réponses:
Désactivez-le puis rallumez-le.
Sérieusement, redémarrez l'appareil - c'est ce qui l'a corrigé pour moi.
Voici ce qui n'a pas fonctionné:
Observations plus anciennes:
Comme les autres, il:
Ce dont je me souviens avoir déclenché la première version où il a cessé de fonctionner, c'était de débrancher l'iPhone pendant qu'il fonctionnait. (Je ne sais pas si c'est lié.)
Cependant, git reset ne le corrige pas (combiné avec toutes les étapes propres qui ne fonctionnent pas) me dit que cela doit être mis en cache ailleurs. Très probablement dans l'un des fichiers .gitignored? (J'utilise Git ignore file pour les projets Xcode )
Une solution de contournement qui fonctionnait pour un UIImageView (dans l'UIView qui en a trois) mais pas pour les autres consistait à placer l'image dans un fichier .xcassets. Le retour au fichier d'image ordinaire n'a pas annulé le correctif. (Ressemble vraiment à une erreur de mise en cache.)
MISE À JOUR: Voir en haut - le redémarrage de l'appareil est ce qui l'a corrigé. J'ai l'impression que les mauvaises données bitmap sont mises en cache sur l'appareil lui-même.
Radar: http://openradar.appspot.com/23534818
la source
"La solution pour moi était simplement de s'assurer que la case" Efface le contexte graphique "n'est pas cochée pour l'UIImageView dans le storyboard. Le simple fait de changer cela l'a corrigé pour moi." Aucune autre solution n'a fonctionné pour moi. Je l' ai sur le forum des développeurs Apple
la source
J'ai eu exactement le même problème sur un iPhone 6.
Le fait très étrange est que j'ai pu utiliser une autre image de mes images.xcassets qui avaient la même taille, compression, espace colorimétrique ...
Je ne parviens pas à comprendre pourquoi cela ne fonctionne pas, mais j'ai trouvé une solution: mettez simplement votre fichier en dehors de vos images.xcassets et utilisez son nom complet (avec extension) dans Interface Builder
J'espère que cette aide!
la source
La séquence d'opérations suivante a résolu le problème pour moi sur Xcode 7.3.1 et iOS 9.3.4:
la source
De nombreuses autres réponses suggèrent que le redémarrage des appareils et / ou la reconstruction et / ou la réinstallation est la solution.
Bien que ces réponses fonctionnent pour certains d'entre nous, la raison pour laquelle ces travaux sont dus au fait que l'application est obligée de «reprendre» ou de «reconstruire» les instantanés mis en cache.
Les instantanés mis en cache sont utilisés par les applications pour présenter des images avant le chargement des données de prise en charge, y compris le catalogue d'actifs qui contient des images de storyboard.
Cette réponse SO de @jaga fournit la solution, mais pas la raison, pour expliquer pourquoi UIImageViews manque dans l'écran de lancement sur l'appareil (mais pas dans le simulateur).
Contexte
Récemment, j'ai tenté d'utiliser une police personnalisée dans mon fichier "Launch Screen.storyboard".
La raison pour laquelle je ne pouvais pas devenir clair après avoir lu cette réponse SO par @TimCamber, ce qui m'a incité à faire un peu plus de recherches et de tests.
La raison pour laquelle une police personnalisée n'est pas incluse dans mon fichier Storyboard Launch Screen est la même raison pour laquelle une image dans un catalogue d'actifs n'est pas incluse ...
L'application prépare des instantanés portrait et paysage de l'écran de lancement de l'application à partir de votre fichier Storyboard Launch Screen et (actuellement) l'enregistre dans votre bundle d'application ici:
/Library/Caches/Snapshots/<<app_bundle>>/
et/Library/Caches/Snapshots/<<app_bundle>>/downscaled/
.Ce processus est terminé avant le chargement des fichiers de prise en charge, y compris les polices personnalisées et le catalogue d'actifs.
Solution
Comme mentionné ci-dessus en suivant la solution de @ jaga, il suffit littéralement de:
la source
Je voyais le même problème. Redémarrer l'appareil (iPhone 6) et reconstruire l'application sur l'appareil est la seule chose qui l'a corrigé. J'ai essayé de nombreux autres conseils et suggestions, mais rien d'autre n'a fonctionné. Seul le redémarrage + la reconstruction ont aidé.
la source
Ma solution @iOS 11.x:
.jpg
image au lieu de.png
. Je pense que la taille du fichier image est importante;.xcassets
;la source
.xcassets
aidéJ'avais la même chose pour l'application installée à partir de TestFlight. Supprimer l'application -> puis redémarrer l'iPhone -> puis réinstaller l'application fonctionne pour moi. Réinstaller l'application ou redémarrer l'appareil n'a pas aidé.
la source
J'avais le même problème, mais le redémarrage de l'appareil n'a pas aidé. Ce qui a fonctionné pour moi a été de supprimer l'UIImageView de mon storyboard de lancement et d'en ajouter un nouveau.
la source
Avez-vous essayé d'éteindre et de rallumer l'appareil? Fais le.
la source
Ce qui a fonctionné pour moi, c'était de sélectionner Réinitialiser le contenu et les paramètres ... dans le menu Simulateur
la source
Sortez les images d' Image.xcassets et ajoutez-les à nouveau au projet. Ça a marché pour moi.
la source
Supprimez l'application du mobile, puis redémarrez le mobile et réinstallez l'application. maintenant les problèmes seront résolus
la source
J'utilise l'appareil iPhone 5s, rencontre également ce problème.
Je le répare en:
Je pense que Xcode a quelque chose de mal à utiliser la mémoire, le système peut allouer un peu de mémoire pour Xcode car le dessin de Xcode l'image du déjeuner a échoué (sur mon ordinateur, Xcode a fonctionné pendant plusieurs semaines sans fermer)
la source
J'ai également eu ce problème exact dans Xcode 7 avec des appareils iPad et iPhone. Bien que cela n'ait aucun sens, j'ai pu la contourner la plupart du temps en définissant non seulement l'image mais également l'image en surbrillance dans la vue d'image sur la même image dans mes images.xcassets.
la source
Je pense que launchscreen ne prend en charge que l'image dans Assets.xcassets.
la source
ça a marché pour moi.
Premier dans xcode clean de project.
Si vous utilisez le simulateur, supprimez l'application et relancez.
Si vous utilisez un appareil, supprimez l'application et redémarrez l'appareil.
la source
Le redémarrage de Xcode l'a fait pour moi.
Ce qui ne l'a pas fait:
la source
Sélectionnez ImageView, puis supprimez l'extension d'image (.png ou .jpg) dans l'onglet Inspecteur d'attributs> Vue d'image> Image> Nom de l'image.
Sur launchscreen.storyboard, l'image n'apparaîtra pas mais elle sera là dans l'appareil. Cela a fonctionné pour moi.
la source
Cela semblait être un bug d'iOS. Comme parfois, l'animation du système a disparu.
Maintenant, je viens de redémarrer l'iPhone et cela fonctionne pour moi.
la source
Dans mon cas, c'était le nom de l' image .
J'ai ajouté une image nommée
[email protected]
à LaunchScreen.xib - l'un de mes anciens écrans de lancement juste à des fins de test. Je construisais sur l'iPhone X Simulator, l'image ne s'est pas affichée.Changer le nom en quelque chose de neutre (MyImage.png) a résolu le problème.
Il semble que cela
@2x
faisait partie du problème ainsi que le-568h
. Ce qui est logique sur un-812h@3x
appareil.la source
C'est trop important Doit être vide !
Launch Screen File
la source
Une solution simple consiste à utiliser JPG au lieu de PNG.
la source
J'ai le même problème avec imageView un storyboard d'écran de lancement. J'ai supprimé la référence de l'image du projet, j'ai renommé mon image et l'ai ajoutée à nouveau au projet. Tout fonctionne parfaitement.
la source
Peut également 1. supprimer l'image du projet 2. changer le nom de l'image 3. ajouter l'image du fichier au projet
Ça a marché pour moi.
la source
J'ai eu ce problème dans iOS 10 sur un iPhone 6 et également dans le simulateur. Mon image était dans un dossier et cela semblait être le problème. J'ai supprimé l'image du dossier dans Xcode et l'ai placée dans le répertoire de base du projet, ce qui a résolu le problème.
la source
J'expérimente la même chose. Je change la résolution de l'image de 300 pixels / pouce, changez-la à 72. Cela fonctionne pour moi.
la source
Ensuite m'a aidé:
Très important aussi : vérifiez que votre xib n'est pas ouvert dans un autre onglet, cela peut aussi le provoquer!
la source
J'ai trouvé une solution simple mais radicale qui a fonctionné pour moi:
1 - Supprimez le fichier: LaunchScreen.storyboard et déplacez-le dans la corbeille.
2 - Produit -> Nettoyer
3 - Créez un nouveau fichier d'écran de lancement nommé: LaunchScreen.storyboard et mettez vos images dedans
4 - Enregistrer et construire
Cela a fonctionné pour moi après avoir essayé des méthodes complexes pendant des heures ... Il semble que mon LaunchScreen.storyboard était verrouillé en écriture et ne pouvait pas être enregistré ou un processus de mise en cache étrange le bloquait.
la source
Le nom de l'image est le problème. Renommez le nom de l'image utilisé dans le storyboard de l'écran de lancement. Assurez-vous de ne pas utiliser de caractère autre que alphanumérique (n'utilisez pas "_- & @") Fonctionne pour moi comme un charme ..
la source