Ich habe eine App, die iOS8 und höher unterstützt, in Xcode 7 integriert und verwende ein XIB für einen Startbildschirm (ich habe keine Startbilder). Die Ansicht enthält ein einzelnes UILabel mit der App-Version und zwei 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 Begrüßungsbild jedoch nicht, wenn ich die App auf einem iPad Air 2 mit iOS9 ausführe. 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 wird in all diesen korrekt angezeigt.
Ich habe einige grundlegende Fehlerbehebungsmaßnahmen durchgeführt, um festzustellen, ob ich herausfinden kann, was gerade passiert, aber ich konnte es nicht lösen. Der einzige Unterschied zwischen dem funktionierenden und dem fehlerhaften Image besteht darin, wann ich es das addiere Vermögenswerte...
Hier ist ein Überblick über das, was ich weiß:
Die UIImageView für das Begrüßungsbild befindet sich an der richtigen Stelle in der richtigen Größe. Ich kann das sagen, weil ich die Hintergrundfarbe auf Grün gesetzt habe, nur um sicherzugehen. Die Ansicht ist vorhanden, aber das Bild wird nicht angezeigt. Ich gehe also davon aus, dass die Ansicht nicht schuld ist.
Wenn Sie 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 annehmen, dass die Ansicht nicht schuld ist.
Das UIImage, das ich in der Begrüßungsbildansicht 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 kein Problem ist, es in anderen Ansichten anzuzeigen.
Ich habe bestätigt, dass die Einstellungen der UIImages für das Logo und den Splash in der xcassets-Datei identisch sind. Sie sind auf Universal, Beliebige Breite und Höhe sowie mehrere Skalierungsfaktoren eingestellt und werden standardmäßig gerendert. Es gibt einen Unterschied: Das Logo hat 1x, 2x und 3x Skalierung, während das Begrüßungsbild 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 (falls vorhanden) vor einiger Zeit zum Projekt hinzugefügt).
Das Hinzufügen eines anderen Bilds einer anderen Größe oder eines anderen Formats (PNG und JPG) zu meinen xcassets und die Verwendung dieses UIImage in der UIImageView für das Begrüßungsbild wird ebenfalls nicht angezeigt.
Wenn Sie der XIB-Datei eine weitere UIImageView hinzufügen und ihr ein UIImage zuweisen, das bereits in den xcassets-Funktionen enthalten war, wird das Bild im Ladebildschirm angezeigt.
Das Kopieren und Umbenennen der für das Logo verwendeten Bilddateien und das Hinzufügen dieser Dateien zum Projekt und die Verwendung dieses UIImage in der Begrüßungsansicht werden ebenfalls nicht angezeigt.
Ich habe versucht, das Projekt zu bereinigen, den Entwicklungscomputer neu zu starten, die App aus Air 2 zu löschen und neu zu installieren, falls dies ein Problem sein sollte.
Diese letzten drei Schritte lassen mich glauben, dass es ein Problem mit Bildern gibt, die nach einem bestimmten Punkt in der Lebensdauer der Projektdatei hinzugefügt wurden. Während ich gestern auf Xcode 7 aktualisiert habe, wurde das Begrüßungsbild ursprünglich in Xcode 6 hinzugefügt, aber das Logo-Bild (ebenfalls in Xcode 6 hinzugefügt) wurde einige Monate zuvor hinzugefügt.
Ich habe die JSON-Dateien nach dem Logo und dem Begrüßungsbild durchsucht und sie scheinen dasselbe Format zu haben. Ich habe auch die pbxproj-Datei nach Unterschieden durchsucht und kann keine sehen.
Ich habe mich also gefragt, ob jemand eine Idee hat, warum auf dem Startbildschirm diese neuen Bilder, die ich speziell auf dem Air 2 hinzufüge, möglicherweise nicht angezeigt werden. Andere Fragen, die ich in Bezug auf Bilder gelesen habe, die nicht alle angezeigt werden, scheinen sich entweder auf Bilder zu starten oder auf Bilder in XIB-Dateien zu beziehen, denen Klassen zugeordnet sind, von denen keine hier relevant erscheint.
Antworten:
Schalten Sie das Gerät aus und wieder ein.
Im Ernst, starten Sie das Gerät neu - das hat es für mich behoben.
Folgendes hat nicht funktioniert:
Ältere Beobachtungen:
Genau wie die anderen, es:
Ich erinnere mich, dass ich beim Auslösen des ersten Builds, bei dem es nicht mehr funktionierte, das iPhone während des Betriebs vom Stromnetz getrennt habe. (Nicht sicher, ob es verwandt ist.)
Der Git-Reset, der es nicht repariert (kombiniert mit all den sauberen Schritten, die nicht funktionieren), sagt mir jedoch, dass dies woanders zwischengespeichert werden muss. Möglicherweise in einer der .gitignored-Dateien? (Ich verwende die Git-Ignorierdatei für Xcode-Projekte. )
Eine Problemumgehung, die für eine UIImageView (in der UIView mit drei), jedoch nicht für die anderen, funktionierte, bestand darin, das Bild in eine .xcassets-Datei einzufügen. Durch das Zurücksetzen auf die einfache Bilddatei wurde der Fix nicht rückgängig gemacht. (Fühlt sich wirklich wie ein Caching-Fehler an.)
UPDATE: Siehe oben - Durch einen Neustart des Geräts wurde das Problem behoben. Ich habe das Gefühl, dass die falschen Bitmap-Daten auf dem Gerät selbst zwischengespeichert werden.
Radar: http://openradar.appspot.com/23534818
quelle
"Die Lösung für mich bestand einfach darin, sicherzustellen, dass das Kontrollkästchen" Grafikkontext löschen "für die UIImageView im Storyboard deaktiviert ist. Durch einfaches Ändern wurde dies für mich behoben." Bei mir haben keine anderen Lösungen funktioniert. Habe es vom Apple Developer Forum bekommen
quelle
Ich hatte genau das gleiche Problem auf einem iPhone 6.
Die sehr seltsame Tatsache ist, dass ich ein anderes Bild aus meinen images.xcassets verwenden konnte, das die gleiche Größe, Komprimierung, den gleichen Farbraum hatte ...
Ich kann nicht herausfinden, warum es nicht funktioniert, aber ich habe eine Lösung gefunden: Legen Sie Ihre Datei einfach außerhalb Ihrer images.xcassets ab und verwenden Sie den vollständigen Namen (mit Erweiterung) in Interface Builder
Ich hoffe das hilft !
quelle
Die folgende Abfolge von Vorgängen hat das Problem für mich unter Xcode 7.3.1 und iOS 9.3.4 behoben:
quelle
Viele andere Antworten schlagen vor, Geräte neu zu starten und / oder neu zu erstellen und / oder neu zu installieren.
Während diese Antworten für einige von uns funktionieren, liegt der Grund dafür darin, dass die App gezwungen ist, zwischengespeicherte Snapshots "erneut zu erstellen" oder "neu zu erstellen".
Zwischengespeicherte Snapshots werden von Apps verwendet, um Bilder zu präsentieren, bevor unterstützende Daten in den Speicher geladen werden, einschließlich des Asset-Katalogs, der Storyboard-Bilder enthält.
Diese SO-Antwort von @jaga bietet die Lösung, aber nicht den Grund, warum UIImageViews im Startbildschirm des Geräts (aber nicht im Simulator) fehlen.
Hintergrund
Kürzlich habe ich versucht, eine benutzerdefinierte Schriftart in meiner Datei "Launch Screen.storyboard" zu verwenden.
Der Grund, warum ich nach dem Lesen dieser SO-Antwort von @TimCamber nicht klar werden konnte, veranlasste mich, etwas mehr zu recherchieren und zu testen.
Der Grund, warum eine benutzerdefinierte Schriftart nicht in meiner Launch Screen Storyboard-Datei enthalten ist, ist der gleiche Grund, warum ein Bild in einem Asset-Katalog nicht enthalten ist ...
Die App erstellt Hoch- und Querformat-Schnappschüsse des Startbildschirms der App aus Ihrer Launch Screen Storyboard-Datei und speichert sie (derzeit) hier 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 Asset-Katalogs.
Lösung
Wie oben erwähnt, indem Sie die Lösung von @ jaga befolgen, ist buchstäblich alles erforderlich:
quelle
Ich sah das gleiche Problem. Das Gerät neu zu starten (iPhone 6) und die App auf dem Gerät neu zu erstellen, ist das einzige, was das Problem behoben hat. Ich habe viele andere Tipps und Vorschläge ausprobiert, aber sonst hat nichts funktioniert. Nur Neustart + Neuerstellung hat geholfen.
quelle
Meine Lösung @iOS 11.x:
.jpg
Bild anstelle von.png
. Ich denke, dass die Größe der Bilddatei wichtig ist..xcassets
;quelle
.xcassets
halfIch hatte das gleiche für App von TestFlight installiert. App löschen -> dann iPhone neu starten -> dann App neu installieren funktioniert bei mir. Nur die App neu zu installieren oder das Gerät neu zu starten, hat nicht geholfen.
quelle
Ich hatte das gleiche Problem, aber ein Neustart des Geräts half nicht. Was für mich funktioniert hat, war das Löschen von UIImageView aus meinem Start-Storyboard und das Hinzufügen eines neuen.
quelle
Haben Sie versucht, das Gerät aus- und wieder einzuschalten? Tu es.
quelle
Was für mich funktioniert hat, war die Auswahl von Inhalt und Einstellungen zurücksetzen ... aus dem Simulator-Menü
quelle
Bringen Sie Bilder aus Image.xcassets und fügen Sie sie erneut zum Projekt hinzu. Es hat bei mir funktioniert.
quelle
Entfernen Sie die App vom Handy und starten Sie das Handy neu und installieren Sie die App erneut. Jetzt werden die Probleme gelöst
quelle
Ich benutze das iPhone 5s Gerät, treffe auch dieses Problem.
Ich behebe es durch:
Ich denke, es ist etwas Falsches an Xcode, Speicher zu verwenden. Das System weist möglicherweise ein wenig Speicher für Xcode zu, da das Zeichnen des Mittagsbilds durch Xcode fehlgeschlagen ist. (Auf meinem Computer ist Xcode mehrere Wochen lang ohne Abschluss ausgeführt worden.)
quelle
Ich hatte auch genau dieses Problem in Xcode 7 mit iPad und iPhone-Geräten. Obwohl es keinen Sinn macht, konnte ich es die meiste Zeit umgehen, indem ich nicht nur das Bild, sondern auch das hervorgehobene Bild in der Bildansicht auf dasselbe Bild in meinen images.xcassets setzte.
quelle
Ich denke, Launchscreen unterstützt nur Bilder in Assets.xcassets.
quelle
es hat bei mir funktioniert.
Zuerst in xcode clean de project.
Wenn Sie den Simulator verwenden, löschen Sie die App und starten Sie sie neu.
Wenn Sie ein Gerät verwenden, löschen Sie die App und starten Sie das Gerät neu.
quelle
Das Neustarten von Xcode hat es für mich getan.
Was hat es nicht getan:
quelle
Wählen Sie die ImageView aus und entfernen Sie die Bilderweiterung (.png oder .jpg) auf der Registerkarte Attributinspektor> Bildansicht> Bild> Bildname.
Auf launchscreen.storyboard wird das Bild nicht angezeigt, aber es befindet sich im Gerät. Das hat bei mir funktioniert.
quelle
Es schien ein Fehler von iOS. Wie manchmal verschwand die Systemanimation.
Jetzt starte ich das iPhone einfach neu und es funktioniert für mich.
quelle
In meinem Fall war es der Bildname .
Ich
[email protected]
habe LaunchScreen.xib ein Bild hinzugefügt - einen meiner alten Startbildschirme nur zu Testzwecken. Ich habe auf dem iPhone X Simulator aufgebaut, das Bild wurde nicht angezeigt.Das Ändern des Namens in etwas Neutrales (MyImage.png) löste das Problem.
Es scheint, dass das
@2x
sowohl Teil des Problems als auch das war-568h
. Was auf einem-812h@3x
Gerät Sinn macht .quelle
Das ist zu wichtig Muss leer sein !
Launch Screen File
quelle
Eine einfache Lösung besteht darin, JPG anstelle von PNG zu verwenden.
quelle
Ich habe das gleiche Problem mit imageView, einem Storyboard für den Startbildschirm. Ich habe die Bildreferenz aus dem Projekt entfernt, mein Bild umbenannt und es erneut zum Projekt hinzugefügt. Alles funktioniert perfekt.
quelle
Kann auch 1. Projektbild löschen 2. Bildnamen ändern 3. Dateibild zum Projekt hinzufügen
Es hat bei mir funktioniert.
quelle
Ich hatte dieses Problem in iOS 10 auf einem iPhone 6 und auch im Simulator. Mein Bild befand sich in einem Ordner und das schien das Problem zu sein. Ich habe das Bild aus dem Ordner in Xcode entfernt und es in das Basisverzeichnis des Projekts gestellt, wodurch das Problem behoben wurde.
quelle
Ich erlebe das gleiche. Ich ändere die Bildauflösung von 300 Pixel / Zoll auf 72. Es funktioniert für mich.
quelle
Weiter hat mir geholfen:
Ebenfalls sehr wichtig : Überprüfen Sie, ob Ihr xib nicht in einem anderen Tab geöffnet ist, da dies ebenfalls dazu führen kann!
quelle
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 legen Sie Ihre Bilder darin ab
4 - Speichern und erstellen
Das hat bei mir 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 Caching-Prozess es blockierte.
quelle
Bildname ist das Problem. Benennen Sie den im Storyboard des Startbildschirms verwendeten Bildnamen um. Stellen Sie sicher, dass Sie kein anderes Zeichen als alphanumerisch verwenden (verwenden Sie nicht "_- & @"). Hat für mich wie ein Zauber funktioniert.
quelle