web-dev-qa-db-ger.com

UIImage Zeigen Sie fehlende Bilder im Startbildschirm auf dem Gerät an

Ich habe eine App, die iOS8 und höher unterstützt, in Xcode 7 integriert, und ich verwende eine XIB für einen Startbildschirm (ich habe keine Startbilder). Die Ansicht enthält ein einzelnes UILabel mit der App-Version und 2 UIImageViews mit Bildern, die beide in Images.xcassets vorhanden sind: Ein Logo und ein Begrüßungsbild.

Das UILabel und das Logo werden beim Starten der Anwendung korrekt angezeigt. Das Startbild erscheint jedoch nicht, wenn ich die App auf einem iPad Air 2 mit iOS9 ausführen. Ich habe auf einem Air und einem Mini mit iOS8 und iOS9-Simulatoren für iPad 2, iPad Air und iPad Air 2 getestet, und das Bild erscheint in allen diesen Bereichen korrekt.

Ich habe einige grundlegende Fehlerbehebungen durchgeführt, um zu sehen, ob ich herausfinden kann, was los ist, aber ich konnte es nicht lösen. Der einzige Unterschied, den ich zwischen dem funktionierenden Image und dem fehlgeschlagenen Image sehe, ist when I fügte es den Vermögenswerten hinzu ...

Hier ist ein Überblick über das, was ich weiß:

  • Die UIImageView für das Splash-Bild befindet sich an der richtigen Stelle in der richtigen Größe. Ich kann das sagen, weil ich die Hintergrundfarbe grün eingestellt habe, nur um sicher zu gehen. Die Ansicht ist vorhanden, aber das Bild wird nicht angezeigt. Ich gehe also davon aus, dass die Sicht nicht schuld ist.

  • Wenn Sie die UIImageView für das Begrüßungsbild so einstellen, dass auch das Logo verwendet wird, wird das Logo an der richtigen Stelle für die Ansicht angezeigt. Dies lässt mich auch davon ausgehen, dass die Ansicht nicht schuld ist.

  • Der UIImage, den ich in der Splash-Image-Ansicht verwende, wird an anderer Stelle in der App verwendet und erscheint in diesen anderen Ansichten einwandfrei (das Logo-Bild wird auch an anderer Stelle in der App verwendet und erscheint in Ordnung). Ich gehe also davon aus, dass das Bild gültig ist und es in anderen Ansichten angezeigt wird, kein Problem.

  • Ich habe bestätigt, dass die Einstellungen der UIImages für das Logo und den Splash in der xcassets-Datei gleich sind. Sie sind auf Universal, Beliebige Breite und Höhe, mehrere Skalierungsfaktoren eingestellt und standardmäßig gerendert. Es gibt einen Unterschied - das Logo hat 1x, 2x und 3x Skalen, während das Splash-Image nur 1x und 2x hat, aber ich habe auch versucht, UIImages mit nur 1x und 1x und 2x Werten in der UIView zu verwenden, und sie funktionieren (wenn sie waren) vor einiger Zeit zum Projekt hinzugefügt).

  • Das Hinzufügen eines anderen Bilds mit einer anderen Größe oder einem anderen Format (PNG und JPG) zu meinen Xcassets und die Verwendung dieses UIImage in der UIImageView für das Begrüßungsbild wird ebenfalls nicht angezeigt.

  • Durch das Hinzufügen eines weiteren UIImageView zur XIB-Datei und das Zuordnen eines UIImage, der bereits in den xcassets funktioniert, wird das Bild im Ladebildschirm angezeigt.

  • Das Kopieren und Umbenennen der für das Logo verwendeten Bilddateien und das Hinzufügen zum Projekt sowie die Verwendung dieses UIImage in der Splash-Ansicht können ebenfalls nicht angezeigt werden.

  • Ich habe versucht, das Projekt zu reinigen, den Entwicklungscomputer neu zu starten, die App aus Air 2 zu löschen und neu zu installieren, falls dies ein Problem war.

Diese letzten drei Schritte lassen vermuten, dass es ein Problem mit Bildern gibt, die nach einem bestimmten Zeitpunkt in der Projektdatei hinzugefügt wurden. Während ich gestern auf Xcode 7 aktualisiert habe, wurde das Splash-Image ursprünglich in Xcode 6 hinzugefügt, das Logo-Bild (ebenfalls in Xcode 6 hinzugefügt) wurde jedoch einige Monate zuvor hinzugefügt.

Ich habe die Json-Dateien nach dem Logo-Image und dem Splash-Image durchsucht und sie scheinen das gleiche Format zu haben. Ich habe auch die pbxproj-Datei durchforstet, um nach Unterschieden zu suchen, und ich kann keine sehen.

Ich wunderte mich also, ob jemand wusste, warum der Startbildschirm diese neuen Bilder, die ich gerade auf der Air 2 füge, möglicherweise nicht anzeigt? Andere Fragen, die ich im Zusammenhang mit Bildern gelesen habe, die nicht alle auftauchen, beziehen sich entweder auf Startbilder oder auf Bilder in XIB-Dateien, die über Klassen verfügen, die hier nicht relevant sind.

287
MFW

Schalten Sie es aus und wieder ein.

Ernsthaft, starte das Gerät neu - das hat es für mich behoben.

Folgendes funktionierte nicht:

  • AbgeleiteteDaten reinigen
  • Projekt reinigen
  • Deinstallation der App vom Gerät
  • Xcode neu starten
  • Starten Sie den Computer neu

Ältere Beobachtungen:

Genau wie die anderen:

  • Funktioniert gut im Simulator
  • Wird verwendet, um an den Geräten zu arbeiten (iPhone 5S, iPad Air)
  • Keine Codeänderungen (überprüft über git reset --hard HEAD), aber trotzdem nicht mehr funktionieren.

Woran ich mich erinnere, als ich den ersten Build, bei dem es nicht mehr funktionierte, auslöste, war es, das iPhone abzutrennen, während es lief. (Nicht sicher, ob es damit zusammenhängt.)

Der git reset behebt das Problem jedoch nicht (zusammen mit allen sauberen Schritten, die nicht funktionieren), sagt mir, dass dies irgendwo anders zwischengespeichert werden muss. Möglicherweise in einer der .gitignored-Dateien? (Ich benutze Git ignoriere die Datei für Xcode-Projekte

Eine Problemumgehung, die für eine UIImageView (in UIView, die drei hat) funktionierte, aber nicht für die anderen, bestand darin, das Bild in eine .xcassets-Datei zu stellen. Durch das Wiederherstellen der einfachen Bilddatei wurde der Fix nicht rückgängig gemacht. (Fühlt sich wirklich wie ein Caching-Fehler an.)

UPDATE: Siehe oben - das Neustarten des Geräts wurde behoben. Ich habe das Gefühl, dass falsche Bitmap-Daten auf dem Gerät selbst zwischengespeichert werden.

Radar: http://openradar.appspot.com/23534818

457
Aral Balkan

"Die Lösung für mich bestand einfach darin, sicherzustellen, dass das Kontrollkästchen" Grafikkontext löschen "für UIImageView im Storyboard deaktiviert ist. Das Ändern dieses Problems hat es für mich behoben." Bekam es von Apple Entwicklerforum

 enter image description here

142
NikLanf

Ich hatte genau das gleiche Problem auf einem iPhone 6.

Die seltsame Tatsache ist, dass ich ein anderes Bild aus meinen images.xcassets verwenden konnte, das die gleiche Größe, Komprimierung, Farbraum ... hatte.

Ich kann nicht finden, warum es nicht funktioniert, aber ich habe eine Lösung gefunden: Platzieren Sie Ihre Datei einfach außerhalb Ihrer images.xcassets und verwenden Sie ihren vollständigen Namen (mit Erweiterung) im Interface Builder

 splashScreen in storyboard sample

Ich hoffe das hilft !

94
gbitaudeau

In der folgenden Reihenfolge von Vorgängen wurde das Problem für Xcode 7.3.1 und iOS 9.3.4 behoben.

  1. Bereinigen Sie Ihren Build (⌘ + ⇧ + K)
  2. Schließen Sie Xcode
  3. IOS-Gerät mit hartem Reset (Neustart der Power + Home-Taste)
  4. Relaunch Xcode - Lassen Sie die Indizierung beenden und das Gerät aufbauen, sobald es fertig ist.
32
mayankk2308

Viele andere Antworten schlagen vor, dass ein Neustart von Geräten und/oder ein Neuaufbau und/oder eine Neuinstallation die Lösung ist. 

Während diese Antworten für einige von uns funktionieren, liegt der Grund dafür, dass die App gezwungen ist, zwischengespeicherte Snapshots "neu aufzunehmen" oder "neu zu erstellen". 

Zwischengespeicherte Momentaufnahmen werden von Apps verwendet, um Bilder anzuzeigen, bevor unterstützende Daten in den Speicher geladen werden, einschließlich des Bestandskatalogs, der Storyboard-Bilder enthält. 

This SO answer by @jaga bietet die Lösung, aber nicht den Grund dafür, warum UIImageViews im Startbildschirm auf dem Gerät (aber nicht im Simulator) fehlen.

Hintergrund

Vor kurzem habe ich versucht, eine benutzerdefinierte Schriftart in meiner Datei "Launch Screen.storyboard" zu verwenden. 

Der Grund, warum ich nicht klar wurde, nachdem ich this SO answer von @TimCamber gelesen hatte, veranlasste mich zu etwas mehr Forschung und Tests. 

Der Grund, warum eine benutzerdefinierte Schriftart nicht in meiner Startbildschirm-Storyboard-Datei enthalten ist, ist derselbe Grund, warum ein Bild in einem Asset-Katalog nicht enthalten ist.

Die App erstellt Schnappschüsse vom Startbildschirm der App aus Ihrer Launch Screen-Storyboard-Datei und speichert sie (derzeit) in Ihrem App-Bundle:

  • /Library/Caches/Snapshots/<<app_bundle>>/ und
  • /Library/Caches/Snapshots/<<app_bundle>>/downscaled/

Dieser Vorgang ist abgeschlossen, bevor unterstützende Dateien geladen werden, einschließlich benutzerdefinierter Schriftarten und des Bestandskatalogs.

Lösung

Wie bereits in @ jagas Lösung erwähnt, ist es buchstäblich alles, was benötigt wird: 

  1. (alte Schule) Fügen Sie dem Bundle Ihrer App eine Bilddatei (.PNG) hinzu (wie im folgenden Screenshot zu sehen ist, habe ich die Bilddatei unter dem Unterverzeichnis "Unterstützende Dateien" in einem Unterverzeichnis "Images" hinzugefügt) 

screenshot of relevant directories in Project Navigator in Xcode

  1. verweisen Sie auf dieses Bild in Ihrem UIImageView-Objekt in der Launch Screen Storyboard-Datei ...

screenshot of Image View section for UIImageView under Attributes Inspector in Xcode

26
andrewbuilder

Ich sah das gleiche Problem. Das Problem wurde nur durch einen Neustart des Geräts (iPhone 6) und die Wiederherstellung der App auf dem Gerät behoben. Ich habe viele andere Tipps und Vorschläge ausprobiert, aber sonst hat nichts funktioniert. Nur Neustart + Wiederaufbau half.

20
Bruce L

Ich hatte das gleiche für App von TestFlight installiert. App löschen -> dann iPhone neu starten -> dann App neu installieren funktioniert für mich . App einfach neu installieren oder Gerät neu starten, hat nicht geholfen.

15
Petro Shm

Meine Lösung @iOS 11.x:

  • Verwenden Sie .jpg image anstelle von .png. Ich denke, die Dateigröße ist wichtig.
  • (Optional) Legen Sie die Image-Datei anstelle von .xcassets im Projektverzeichnis ab.
14
keyOfVv

Ich hatte das gleiche Problem, aber das Neustarten des Geräts half nicht. Was für mich funktionierte, war das Löschen von UIImageView aus dem Launch Storyboard und das Hinzufügen eines neuen.

8
Jim Rhoades

Haben Sie versucht, das Gerät aus- und wieder einzuschalten? TU es.

7
Jakub Truhlář

Was für mich funktionierte, war die Auswahl von Inhalt und Einstellungen zurücksetzen aus dem Simulatormenü

 Reset content and Settings menu

7
andnil

Bringen Sie Bilder aus Image.xcassets und fügen Sie sie erneut zum Projekt hinzu. Es hat für mich funktioniert. 

6
Trinh Tran

Ich verwende das iPhone 5s-Gerät, auch dieses Problem stoße auf. 

Ich repariere es durch:

  • Entfernen Sie die Laufwerksdaten

  • Reinigen Sie das Projekt 

  • Starten Sie Xcode neu 

  • Entfernen Sie das Projekt von meinem Gerät

  • Starten Sie die 5s neu. 

Ich denke, es ist etwas falsches an Xcode, um Speicher zu verwenden. Das System kann einen kleinen Speicherplatz für Xcode zuweisen, da Xcode beim Erstellen des Lunch-Bildes nicht funktioniert.

5
guozqzzu

es hat für mich gearbeitet.

Zuerst in xcode clean de project.

Wenn Sie den Simulator verwenden, löschen Sie die App und starten Sie sie erneut.

Wenn Sie ein Gerät verwenden, löschen Sie die App und starten Sie das Gerät neu.

4
oscar castellon

Dieses genaue Problem hatte ich auch in Xcode 7 mit iPad- und iPhone-Geräten. Obwohl es keinen Sinn macht, konnte ich es meistens umgehen, indem ich nicht nur das Bild, sondern auch das hervorgehobene Bild in der Bildansicht auf dasselbe Bild in meinen images.xcassets setzte.

4
bonnie lapin

Ich denke, Launchscreen unterstützt nur Bilder in Assets.xcassets.

4
Sunly

Wählen Sie ImageView aus und entfernen Sie dann die Image-Erweiterung (.png oder .jpg) im Attribut-Inspector> Image-Ansicht> Image> Image-Name. 

Auf launchscreen.storyboard wird das Bild nicht angezeigt, es befindet sich jedoch im Gerät. Das hat bei mir funktioniert.

3
Asha Antony

Es schien ein Bug von iOS zu sein. Wie manchmal verschwand die Systemanimation.

Jetzt starte ich das iPhone einfach neu und es funktioniert für mich.

2
Amon

In meinem Fall war es der Bildname .
Ich habe ein Bild mit dem Namen [email protected] zu LaunchScreen.xib hinzugefügt - einem meiner alten Startbildschirme, nur zum Testen. Ich baute auf dem iPhone X Simulator auf, das Bild wurde nicht angezeigt. 

Das Ändern des Namens in etwas Neutrales (MyImage.png) hat das Problem behoben.

Es scheint, dass der @2x ebenso Teil des Problems war wie der -568h. Was auf einem [email protected]-Gerät Sinn macht.

2
de.

Das ist zu wichtig Muss leer sein! Launch Screen File

 enter image description here

2
SwiftDeveloper

Die Lösung ist einfach JPG anstelle von PNG zu verwenden.

2
KING

App von Handy entfernen und dann Handy neu starten und App erneut installieren. Jetzt werden die Probleme gelöst

2
midhun p

Der Neustart von Xcode hat es für mich getan.

Was hat nicht tat es:

  • Bereinigen Sie den Ordner
  • Gerät oder Simulator neu starten (Bild ist weder sichtbar noch sichtbar)
2
Manuel

Ich hatte dieses Problem in iOS 10 auf einem iPhone 6 und auch im Simulator. Mein Bild war in einem Ordner und das schien das Problem zu sein. Ich entfernte das Bild aus dem Ordner in Xcode und legte es in das Basisverzeichnis des Projekts, wodurch das Problem behoben wurde.

1
JamieDass

Ich habe das gleiche Problem mit imageView ein Startbildschirm-Storyboard. Ich entfernte die Referenz des Bildes aus dem Projekt, benannte mein Bild um und fügte es erneut zum Projekt hinzu. Alles funktioniert perfekt.

1
ostap_holub

Kann auch 1. Projektbild löschen 2. Bildname ändern 3. Dateibild zum Projekt hinzufügen

Es hat für mich funktioniert.

1
Jesse

Ich erlebe das Gleiche. Ich ändere die Bildauflösung von 300 Pixel/Zoll und ändere sie in 72. Dies funktioniert für mich.

1
Tim Le

Gelöst!

Das einzige, was für mich funktionierte, war das Löschen der ViewController aus LaunchScreen.storyboard und das Erstellen einer neuen ViewController-Einstellung auf 

Ist der Anfangsansicht-Controller

So einfach ist das :)

Als nächstes half mir:

  • Ändern Sie "Launch Screen File" in ein anderes Xib
  • app ausführen
  • xib zurück wechseln

Auch sehr wichtig : Überprüfe, ob dein xib nicht in einem anderen Tab geöffnet ist, das kann es auch verursachen!

1

Der Bildname ist das Problem . Benennen Sie den im Storyboard des Startbildschirms verwendeten Bildnamen um Stellen Sie sicher, dass Sie keine anderen Zeichen als alphanumerische Zeichen verwenden (verwenden Sie nicht "_- & @") Für gearbeitet Ich mag einen Zauber ..

1
Aproram

Ich bin auch auf dieses Problem gestoßen. Das Löschen aller Inhalte und Einstellungen von SIMULATOR hat für mich funktioniert.

0
skyecloude

In meinem Fall gehe ich einfach zur App ZIELE -> Allgemein -> App-Symbole und zum Starten von Bildern -> Bildquelle starten Dann wählen Sie die Quelle, wo ich die Bilder platziere Ich hoffe, das wird Ihnen helfen

0
Hoang Quan

Für mich bestand das Problem darin, dass die Größe meines Launchscreen um 1 Pixel (2209x1242 statt 2208x1242) abnahm. Es wurde korrigiert, das Gerät neu gestartet und die App neu erstellt.

0
gklka

Ich habe eine einfache, aber radikale Lösung gefunden, die für mich funktioniert hat:

1 - Löschen Sie die Datei: LaunchScreen.storyboard und verschieben Sie sie in den Papierkorb.

2 - Produkt -> Reinigen

3 - Erstellen Sie eine neue Startbildschirmdatei mit dem Namen: LaunchScreen.storyboard, und fügen Sie Ihre Bilder ein

4 - Speichern und bauen

Das hat für mich funktioniert, nachdem ich stundenlang komplexe Methoden ausprobiert hatte ... Es scheint, dass mein LaunchScreen.storyboard schreibgeschützt war und nicht gespeichert werden konnte oder ein seltsamer Zwischenspeicherungsprozess es blockierte.

0
Fox5150

"myProject" ist mit vielen Bildern aus Images.xcassets initiiert. Nach dem Löschen und Wiederherstellen von „Assets.xcasset“ aus dem Projekt bin ich auf fehlende Bilder gestoßen. 

  1. Löschen von Images.xcassets versehentlich, aber 
  2. Images.xcassets wieder zu "myProject" hinzufügen 

Ich bin auf dieses fehlende Bildproblem gestoßen und habe folgende Methoden ausprobiert: 

  1. Schalten Sie das Gerät wieder ein, es funktioniert jedoch nicht. 
  2. Verwenden von Xcode zum "Erstellen" eines Projekts nach dem "Säubern", und es funktioniert auch nicht. 

Lösung um mein Problem zu beheben: 

  1. Jedes einzelne Bild in Images.xcassets wurde über Xcode in "Target Membership" unter "Show in File Inspector" zu "myProject" hinzugefügt. 
0
Wang3t

Wählen Sie Ihre Bilddatei aus dem linken Menü aus, und wählen Sie im rechten Menü der Dienstprogramme "Dateiinspektor anzeigen". Stellen Sie unter Zielmitgliedschaft sicher, dass Ihr Ziel ausgewählt ist. Ich habe das Bild mit der Auswahl des Ziels hinzugefügt, weiß aber nicht, warum es nicht ausgewählt wurde. Ich habe alle Lösungen ausprobiert, neu gestartet, gelöscht usw. Niemand funktioniert. Genau das hat funktioniert. Hoffe es hilft jemand anderem.

0
nfinfu