Ich verwende den Asset-Katalog von Xcode 5 und möchte meinen LaunchImage
als Hintergrundbild für meine Startansicht verwenden (eine übliche Vorgehensweise, um den Übergang von "Laden" zu "Laden" reibungslos zu gestalten).
Ich möchte denselben Eintrag im Asset-Katalog verwenden, um Platz zu sparen, und muss das Bild nicht in zwei verschiedenen Bildsätzen replizieren.
Rufen Sie jedoch an:
UIImage *image = [UIImage imageNamed:@"LaunchImage"]; //returns nil
quelle
UIInterfaceOrientationIsLandscape()
stattdessen.Die LaunchImages sind etwas Besonderes und eigentlich kein Asset-Katalog auf dem Gerät. Wenn Sie mit iFunBox / iExplorer / etc (oder im Simulator oder im Build-Verzeichnis) suchen, können Sie die endgültigen Namen sehen und dann Code schreiben, um sie zu verwenden - z. Für ein iPhone-Projekt nur für iOS7 wird das richtige Startbild festgelegt:
Ich habe dies in viewDidLoad eingefügt.
Das ist nicht wirklich ideal, es wäre großartig, wenn Apple uns dafür eine nette API geben würde.
quelle
Meine App unterstützt derzeit nur iOS 7 und höher.
So verweise ich auf das Startabbild aus dem Asset-Katalog:
Sie können weitere Schlüsselwertpaare hinzufügen, wenn Sie ältere iOS-Versionen unterstützen möchten.
quelle
UIScreen.mainScreen.bounds
je nach aktueller Ausrichtung der Benutzeroberfläche unterschiedlich ist. Siehe stackoverflow.com/a/24153540/158525Hier eine Kategorie zu UIImage, die auf der oben von Cherpak Evgeny bereitgestellten Lösung basiert.
UIImage + SplashImage.h :
UIImage + SplashImage.m :
quelle
@ codemans Antwort für Swift 1.2 aktualisiert:
So rufen Sie es auf und unterstützen die Rotation für iOS 8:
Genau das, was ich brauchte, danke!
quelle
Ich habe gerade eine allgemeine Methode geschrieben, um den Namen des Begrüßungsbildes für iPhone und iPad (Landschaft, Hochformat) zu erhalten. Es hat bei mir funktioniert. Ich hoffe, es hilft Ihnen auch. Ich habe dies mit Hilfe anderer SO-Antworten geschrieben, danke @Pichirichi für die ganze Liste.
Andere Dienstprogrammmethoden sind
quelle
[screen.coordinateSpace convertRect:screen.bounds toCoordinateSpace:screen.fixedCoordinateSpace]
, aber machen Testen Sie zuerst, ob Sie iOS 8 verwenden. Andernfalls stürzt das ab.Schnelle Version von Cherpak Evgenys Antwort:
quelle
Nach der Antwort von @ Pichirich habe ich mein Startbild in InterfaceBuilder wie folgt referenziert:
"LaunchImage.png"
... und mit Xcode 5.0.2 wird automatisch das entsprechende Bild direkt aus dem Asset-Katalog abgerufen.
Dies ist, was ich erwarten würde - abgesehen von Apples bösartigem Schritt, "Default.png" stillschweigend in "LaunchImage.png" umzubenennen :)
quelle
nil
nach der Initialisierung derIn der Dokumentation ist klar angegeben:
"Jeder Satz in einem Asset-Katalog hat einen Namen . Mit diesem Namen können Sie jedes einzelne im Satz enthaltene Bild programmgesteuert laden. Um ein Bild zu laden, rufen Sie die Methode UIImage: ImageNamed: auf und übergeben Sie den Namen des Satzes, der das Bild enthält . "
Die Verwendung von Pichirichis Liste hilft, diese Inkonsistenz zu lösen.
quelle
UIImageView *myView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"LaunchImage"]];
Funktioniert super![UIImage imageNamed:..]
wissen, welche man auswählen soll?Sie können einfach über eine Codezeile auf das Startbild zugreifen.
Befolgen Sie die unten angegebenen Schritte, um die oben dargestellte Funktionalität zu erreichen.
Schritt 1. Erweitern Sie die
UIImage
Klasse, indem Sie eine Kategorie erstellen und die folgende Methode hinzufügen.Schritt 2. Die obige Methode sollte funktionieren, indem der folgende Code ebenfalls in dieselbe Kategorie von eingefügt wird
UIImage
quelle
Mir ist klar, dass dies nicht unbedingt die beste Lösung für alle ist, aber der einfachste (und meiner Meinung nach am wenigsten fehleranfällige) Weg, dies zu tun, besteht darin, einen separaten Eintrag in Ihrem Images.xcassets-Katalog vorzunehmen. Ich habe es genannt
SplashImage
.Wenn Sie einen neuen Eintrag hinzufügen, stellen Sie sicher, dass Sie nicht "Neues Startbild" als Option auswählen. Wählen Sie stattdessen den generischen "New Image Set". Öffnen Sie als Nächstes den Inspektor und wählen Sie die entsprechenden Optionen aus. Wenn Sie wie ich nur für Retina-Geräte bauen, können Sie Folgendes auswählen:
Damit bleiben Ihnen vier Einträge (iPhone 4S, iPhone 5 (s, c), iPhone 6 und iPhone 6 Plus).
Die den Bildern entsprechenden Dateien lauten wie folgt:
Nachdem Sie dies getan haben, können Sie natürlich einfach verwenden
[UIImage imageNamed:@"SplashImage"]
quelle
Mit Hilfe von Pichirichis Antwort habe ich die folgende Kategorie (iOS 7+) implementiert : UIImage + AssetLaunchImage
Es ist eigentlich wenig mehr als das sofortige Generieren von Namen, wird aber wahrscheinlich hilfreich sein.
quelle
Auf die neueste Swift-Syntax aktualisiert (Swift 5)
quelle