webentwicklung-frage-antwort-db.com.de

Startbildschirm, der sich genau wie Startbild verhält

Damit das iPad Pro beim Start die volle Auflösung verwendet, müssen wir eine Launch Screen File verwenden.

Ich habe noch nie ein Startbildschirm-XIB/Storyboard verwendet, da meine App abwärtskompatibel zu iOS 7 ist. Normalerweise verwende ich einen LaunchImage-Bestandskatalog , um ein spezifisches statisches Bild für jede Gerätedimension und Startrichtung zu definieren.

Jetzt versuche ich, eine Launch Screen-Datei zu definieren, die sich wie ein LaunchImage-Asset-Katalog verhält, aber ich habe Schwierigkeiten, dies zu tun. Im Speziellen:

1) Ich sehe keine gute Möglichkeit, einen anderen UIImage abhängig von der genauen Größe des Geräts auszuwählen, z. Zeigen Sie ein Bild für iPhone 4S-Benutzer und ein anderes Bild für iPhone 5-Benutzer.

2) Ich sehe keine Möglichkeit, eine andere UIImage für iPad-Porträt- und iPad-Landschaftsansichten auszuwählen. Größenklassen scheinen zu glauben, dass sowohl das iPad Portrait als auch die iPad Landscape "Regular" - Breite und "Regular" - Höhe sind. Daher werden alle UIImage-Bilder, die auf dem iPad Portrait angezeigt werden, auch in iPad Landscape angezeigt.

25
Dan Fabulich

Das System lädt die Startdatei, bevor die App gestartet wird. Dadurch werden einige Einschränkungen für den Inhalt der Datei festgelegt (einige davon können Sie dazu zwingen, wieder statische Image-Dateien zu erstellen):

1.Die App ist noch nicht geladen, sodass die Ansichtshierarchie nicht vorhanden ist und das System keinen benutzerdefinierten Setup-Code für den Ansichtscontroller aufrufen kann (z. B. viewDidLoad).

2.Sie können nur Standard-UIKit-Klassen verwenden, sodass Sie UIView oder UIViewController verwenden können, jedoch keine benutzerdefinierte Unterklasse. Wenn Sie versuchen, eine benutzerdefinierte Klasse festzulegen, wird in Xcode ein Fehler wegen ungültiger Konfiguration angezeigt.

3.Die Startdatei kann nur grundlegende UIKit-Ansichten wie UIImageView und UILabel verwenden. Sie können keine UIWebView verwenden.

4.Wenn Sie ein Storyboard verwenden, können Sie mehrere Ansichtscontroller angeben, es gibt jedoch einige Einschränkungen. Sie können beispielsweise View-Controller in einen Navigations- oder Registerkarten-Controller einbetten, komplexere Containerklassen wie UISplitViewController funktionieren jedoch nicht (zumindest noch nicht).

5.Lokalisierung der Startdatei scheint momentan keine Wirkung zu haben. Die Basislokalisierung wird immer verwendet, so dass Sie wahrscheinlich Text auf dem Startbildschirm vermeiden möchten.

6.Sie können keine unterschiedlichen Startdateien für iPad und iPhone angeben. Dies kann ein Problem sein, wenn Sie für diese Geräte deutlich andere Schnittstellen verwenden, da Sie mit automatischen Layout- und Größenklassen nur so viel tun können.

Beachten Sie, dass Sie bei der Bereitstellung auf iOS 7 die statischen Startabbilddateien noch hinzufügen müssen. Sie können sowohl eine Startbilddatei als auch statische Startbilder einschließen. Geräte wie das iPhone 6 mit iOS 8 verwenden die Startbilddatei, während iOS 7-Geräte auf die Startbilder zurückgreifen.

4
Kusal Shrestha

Sie können Größenklassen verwenden, um verschiedene Bilder für verschiedene Bildschirmgrößen anzugeben. Dies hilft Ihnen jedoch nicht, Fälle von iPhone 4S- und iPhone 5-Bildschirmen zu handhaben 

2
  1. Erstellen Sie zuerst alle Ihre Bilder. Öffnen Sie dann Ihren Asset-Katalog und klicken Sie mit der rechten Maustaste -> App-Symbole und Startbilder -> Neues iOS-Startbild. Dadurch wird eine Datei erstellt, in die alle Ihre Dateien gezogen werden. TU das. Nennen Sie das Asset "Starten".  enter image description here

  2. Erstellen Sie ein neues Startbild-Storyboard mit Befehl-n. Wählen Sie iOS -> Benutzeroberfläche -> Startbildschirm. Rufen Sie die Datei "Startbildschirm" auf.

  3. Wählen Sie in Ihrem Launch Screen-Storyboard die Ansicht des View-Controllers aus 

[selecting the view

  1. Suchen Sie den UIImageView-Platzhalter in der Objektbibliothek in der unteren Ecke der rechten Seite ba und ziehen Sie ihn in die Startansicht. 

 UIImageView

  1. Wählen Sie nun die Bildansicht im Storyboard aus und geben Sie den Namen des Bildes aus Ihrem Objektkatalog ein. 

 enter image description here

  1. Bewegen Sie das Ziehen von UIImageView in die Containeransicht, um die automatischen Layouteinschränkungen wie folgt festzulegen: 

 enter image description here

  1. Optional ... wenn Sie in Ihrem Storyboard "Nizza" aussehen sollen, wählen Sie die Ansicht aus und führen Sie die Option-cmd- = aus, um den Frame der UIImageView zu aktualisieren. 

  2. Gehen Sie zu Ihrer info.plist und geben Sie den Namen Ihres Storyboards ("Launch - Bildschirm") für den Schlüssel "Basisname der Launch Screen-Interface-Datei" ein.

  3. Reinige und renne. 

Hoffe das hilft und dass ich nichts vergessen habe! 

2
olynoise

Ein anderer Ansatz ist die Verwendung von Abstandsansichten, mit denen das richtige Bild im sichtbaren Bereich positioniert und das andere vom Bildschirm verschoben wird (siehe meine ursprüngliche Antwort auf eine ähnliche Frage hier ).

Sie können keine unterschiedlichen Bilder für unterschiedliche Bildschirmgrößen (iPhone 4, iPhone X, ...) bereitstellen, aber Sie möchten unterschiedliche Bilder für iPhone und iPad und verschiedene Bilder für Hoch- und Querformat diese Lösung ist für Sie.

Ich habe ein Beispielprojekt auf github erstellt, wenn Sie es ausprobieren möchten. Es funktioniert auf iPad und iPhone.

Constraints in Interface Builder

Die wichtigen Einschränkungen sind

PortraitSpacer.width ≤ 5 × view.width
PortraitSpacer.width ≤ 5 × view.height

LandscapeSpacer.width ≥ 5 × view.width
LandscapeSpacer.width ≥ 5 × view.height

PositionSpacer.width = 5 × view.width

dabei sind view.width und view.height die Breite und Höhe der Hauptansicht.

Das PortraitSpacer positioniert das Porträtbild bei 5 × min(view.width, view.height), das LandscapeSpacer positioniert das Landschaftsbild bei 5 × max(view.width, view.height) und das PositionSpacer hat das gleiche Breite wie PortraitSpacer im Hochformat und die gleiche Breite wie LandscapeSpacer im Querformat.

Wir multiplizieren alles mit 5, damit sich die beiden Bilder nicht überlappen. Dies funktioniert für alle Geräte, bei denen Folgendes zutrifft

5 × min(view.width, view.height) + max(view.width, view.height) ≤ 5 × max(view.width, view.height)

Im Querformat würde dies bedeuten

5 / 4 ≤ view.width / view.height

das ist bei allen aktuellen Geräten der Fall: iPad hat das niedrigste Seitenverhältnis mit 4: 3, das immer noch größer als 5: 4 ist.

Sie können dann natürlich Bilder pro Gerät (iPhone, iPad) im Anlagenkatalog konfigurieren.

0
Jochen

Dies ist eine Lösung für iPad, die funktionieren kann, 

für iPhone können Sie Größenklassen verwenden und ich schreibe diese Lösung hier nicht.

Die Lösung besteht darin, das Bild Ihres Begrüßungsbildschirms in Komponenten aufzuteilen und Einschränkungen zu verwenden, um das Bild für Portrait vs Landscape zu bearbeiten. 

Hier ist ein Beispiel wie ich es gemacht habe.

Erstellen Sie ein Start-Storyboard für das iPad 

UILaunchStoryboardName ~ ipad (UILaunchStoryboardName ~ iphone)

Nehmen Sie Ihr Landschaftsbild in meinem Fall 2048x1536 auf

Ich nahm das Landschaftsbild und schnitt es in drei Teile 

  1. Zentrum 1536x1536 
  2. Links 256x1536 
  3. Rechts 256x1536

Auf dem Launch Storyboard erstellte ich 3 Bildansichten mit den folgenden Einschränkungen

Mittelstück: 

  • Pin oben und unten, 
  • zentrum im überblick,
  • seitenverhältnis beibehalten

Linkes & rechtes Stück: 

  • 0 Nachlaufen/Führen zum Zentrum, 
  • Top ausrichten, 
  • Gleiche Höhe

Dann für den Modus der Ansicht für links und rechts habe ich sie von Aspektfüllung nach rechts unten und links unten geändert (funktionierte am besten für mich).

Ich weiß, dass das für etwas übertrieben scheint, das einfach sein sollte. Mein Grund für die Verwendung des Start-Storyboards für Startbilder war die Reduzierung der App-Größe. Ich brauchte weniger Startbilder und ich könnte jpeg anstelle von png verwenden

0
Ryan Heitner