Das neue iPhone 5 Display verfügt über ein neues Seitenverhältnis und eine neue Auflösung (640 x 1136 Pixel).
Was ist erforderlich, um neue Anwendungen zu entwickeln oder bereits vorhandene Anwendungen auf die neue Bildschirmgröße umzustellen?
Was sollten wir beachten, um Anwendungen sowohl für ältere Displays als auch für das neue Breitbild-Seitenverhältnis "universell" zu gestalten?
Wenn Sie eine App für das iPhone 4S oder früher erstellt haben, wird sie auf dem iPhone 5 mit Letterbox ausgeführt.
Um Ihre App an den neuen größeren Bildschirm anzupassen, ändern Sie zunächst das Startbild in: [email protected]. Seine Größe sollte 1136x640 (HxB) betragen. Ja, das Standardbild in der neuen Bildschirmgröße ist der Schlüssel, damit Ihre App den gesamten Bildschirm des neuen iPhone 5 einnimmt .
(Beachten Sie, dass die Namenskonvention nur für das Standardbild funktioniert. Wenn Sie ein anderes Bild "[email protected]" benennen, wird es nicht anstelle von "[email protected]" geladen. Wenn Sie andere Bilder laden müssen Für verschiedene Bildschirmgrößen müssen Sie dies programmgesteuert tun.)
Wenn Sie sehr, sehr viel Glück haben, könnte es das sein ... aber aller Wahrscheinlichkeit nach müssen Sie noch ein paar Schritte unternehmen.
Entwerfen Sie im Extremfall (wenn keiner der oben genannten Punkte ausreicht) die beiden Xibs und laden Sie die entsprechende in den View Controller.
So erkennen Sie die Bildschirmgröße:
quelle
Das einzig wirklich Notwendige ist, den App-Ressourcen ein Start-Image mit dem Namen "[email protected]" hinzuzufügen. Im Allgemeinen funktioniert die App (wenn Sie Glück haben) ordnungsgemäß.
Wenn die App keine Berührungsereignisse verarbeitet, stellen Sie sicher, dass das Tastenfenster die richtige Größe hat. Die Problemumgehung besteht darin, den richtigen Rahmen festzulegen:
Es gibt andere Probleme, die nicht mit der Bildschirmgröße bei der Migration auf iOS 6 zusammenhängen. Weitere Informationen finden Sie in den Versionshinweisen zu iOS 6.0 .
quelle
Manchmal (für Pre-Storyboard-Apps), wenn das Layout ausreichend unterschiedlich sein soll, lohnt es sich, im viewController je nach Gerät eine andere xib anzugeben (siehe diese Frage - Sie müssen den Code für das iPhone 5 ändern) init, da kein Twiddling mit Masken zur automatischen Größenänderung funktioniert, wenn Sie andere Grafiken benötigen.
Dies ist nützlich für Apps, die auf ältere iOS-Versionen abzielen.
quelle
Hier finden Sie ein schönes Tutorial (für MonoTouch, aber Sie können die Informationen auch für Nicht-MonoTouch-Projekte verwenden):
http://redth.info/get-your-monotouch-apps-ready-for-iphone-5 -ios-6-heute /
Erstellen Sie ein neues Bild für Ihren Begrüßungs- / Standardbildschirm ( 640 x 1136 Pixel ) mit dem Namen " [email protected] ".
Gehen Sie im iOS-Simulator zum Menü Hardware -> Gerät und wählen Sie " iPhone (Retina 4-Zoll) ".
Erstellen Sie andere Bilder, z. B. Hintergrundbilder
quelle
Es ist einfach, iPhone5 und iPhone4 über XIBs zu migrieren .........
quelle
Ich löse dieses Problem hier . Fügen Sie einfach ~ 568h @ 2x Suffix zu Bildern und ~ 568h zu xibs hinzu. Es sind keine weiteren Laufzeitprüfungen oder Codeänderungen erforderlich.
quelle
Ich hatte das neue Standard-Startbild hinzugefügt und (beim Auschecken mehrerer anderer SE-Antworten ...) sichergestellt, dass meine Storyboards alle automatisch die Größe und die Unteransichten haben, aber die Netzhaut 4 Zoll noch mit einem Briefkasten versehen ist.
Dann bemerkte ich, dass auf meiner Info-Liste eine Werbebuchung für " Bild starten " auf " Default.png " gesetzt war, die ich auf diese Weise entfernte und auf magische Weise kein Briefkasten mehr erschien. Hoffentlich erspart das jemand anderem die gleiche Verrücktheit, die ich ertragen habe.
quelle
Ich denke, es wird nicht in allen Fällen funktionieren, aber in meinem speziellen Projekt hat es mich daran gehindert, NIB-Dateien zu duplizieren:
Irgendwo in können
common.h
Sie diese Definitionen basierend auf der Bildschirmhöhe vornehmen:In Ihrem Basis-Controller:
quelle
In einer
constants.h
Datei können Sie folgende definierte Anweisungen hinzufügen:quelle
Um festzustellen, ob Ihre App das iPhone 5 Retina unterstützt, verwenden Sie Folgendes: (Dies kann robuster sein, um den Anzeigetyp, 4S Retina usw. zurückzugeben. Wie unten beschrieben, wird es jedoch nur zurückgegeben, wenn das iPhone iOS5 Retina als unterstützt Ja oder Nein)
Fügen Sie in einer allgemeinen ".h" -Datei Folgendes hinzu:
Fügen Sie in einer allgemeinen ".m" -Datei Folgendes hinzu:
quelle
Erstellen Sie zunächst zwei xibs und hängen Sie alle Delegaten, die Hauptklasse, an die an,
xib
und dann können Sie diese unten in Ihrerappdelegate.m
Datei angegebene Bedingung in setzenSie können es überall im Programm verwenden, abhängig von Ihren Anforderungen, auch in Ihren
ViewController
Klassen. Am wichtigsten ist, dass Sie zweixib
separate Dateien für erstellt habeniphone 4(320*480) and iphone 5(320*568)
quelle
Versuchen Sie die folgende Methode in einer Singleton-Klasse:
quelle
Sie können die
Auto Layout
Funktion verwenden und das Design mit der Bildschirmauflösung des iPhone 5 erstellen. Es funktioniert sowohl für 4 "- als auch für 3,5" -Geräte. In diesem Fall sollten Sie jedoch über ausreichende Kenntnisse des Layout-Managers verfügen.quelle
Die Überprüfung
bounds
mit568
schlägt im Querformat fehl. Das iPhone 5 wird nur im Hochformat gestartet. Wenn Sie jedoch Rotationen unterstützen möchten, muss das iPhone 5 "check" auch dieses Szenario behandeln.Hier ist ein Makro, das den Orientierungsstatus behandelt:
Die Verwendung des Aufrufs "PreferredMode" stammt aus einem anderen Beitrag, den ich vor einigen Stunden gelesen habe, sodass ich nicht auf diese Idee gekommen bin.
quelle
Zeigen Sie zuerst dieses Bild. In diesem Bild wird eine Warnung für die Retina 4-Unterstützung angezeigt. Klicken Sie also auf diese Warnung und dann auf Hinzufügen, damit Ihr Retina 4-Begrüßungsbildschirm automatisch zu Ihrem Projekt hinzugefügt wird.
und nachdem Sie diesen Code verwendet haben:
quelle
Ich hatte noch nie ein solches Problem mit einem Gerät, da ich eine Codebasis für alle hatte, ohne fest codierte Werte. Was ich tue, ist, das Bild mit der maximalen Größe als Ressource anstelle eines für jedes Gerät zu haben. Zum Beispiel würde ich eine für die Netzhautanzeige haben und sie als Aspektanpassung anzeigen, damit sie wie auf jedem Gerät angezeigt wird. Zum Beispiel zur Laufzeit den Schaltflächenrahmen festlegen. Hierfür verwende ich den% -Wert der Patentansicht. Wenn ich möchte, dass die Breite die Hälfte der übergeordneten Ansicht beträgt, nehmen Sie 50% der übergeordneten Ansicht und das Gleiche gilt für Höhe und Mitte.
Damit brauche ich nicht einmal die Xibs.
quelle
Mit dieser Definition können Sie berechnen, ob Sie das iPhone 5 basierend auf der Bildschirmgröße verwenden:
Verwenden Sie dann eine einfache
if
Anweisung:quelle
Peter, du solltest dir Canappi wirklich ansehen, es erledigt alles für dich, alles was du tun musst, ist das Layout als solches anzugeben:
Von dort generiert Canappi den richtigen Objective-C-Code, der das Gerät erkennt, auf dem die App ausgeführt wird, und verwendet:
Canappi funktioniert wie Interface Builder und Story Board zusammen, nur dass es in Textform vorliegt. Wenn Sie bereits über XIB-Dateien verfügen, können Sie diese konvertieren, sodass Sie nicht die gesamte Benutzeroberfläche von Grund auf neu erstellen müssen.
quelle
Sie können die Bildschirmgröße manuell überprüfen, um festzustellen, auf welchem Gerät Sie sich befinden:
quelle
Sie können diesen Code hinzufügen:
quelle
scale
AuswahlUIScreen
und Sie haben einen Fall, in dem Ihr Code mit "Standardauflösung" nicht ausgeführt wird.Dies ist ein echter universeller Code. Sie können 3 verschiedene Storyboards erstellen:
Stellen Sie den Universal-Modus Ihres Projekts ein und legen Sie Ihr iPhone mit dem iPhone5-Storyboard und das iPad-Haupt-Storyboard mit dem iPad-Ziel-Storyboard fest. Fügen Sie jetzt ein neues Storyboard-Ziel für das iPhone hinzu und ändern Sie die Auflösung für das iPhone 4s oder weniger. Implementieren Sie jetzt AppDelegate.m
iPhone4 / 4s (ist das gleiche für 3 / 3Gs) eines für iPhone5 und machen das Projekt universell , mit einem neuen Storyboard-Ziel für iPad, jetzt in AppDelegate.m unter dem folgenden
didFinishLaunching
Code hinzufügen:Sie haben also eine Universal-App für das iPhone 3 / 3Gs / 4 / 4s / 5 für alle iPod-Gen und alle iPad-Typen erstellt
Denken Sie daran, alle IMG in
myImage.png
und zu integrieren[email protected]
quelle
Meiner Meinung nach besteht die beste Möglichkeit, mit solchen Problemen umzugehen und einige für die Überprüfung der Gerätehöhe erforderliche Bedingungen zu vermeiden, darin, den relativen Rahmen für Ansichten oder ein beliebiges UI-Element zu verwenden, das Sie Ihrer Ansicht hinzufügen, z. B. wenn Sie hinzufügen Einige UI-Elemente, die Sie möchten, sollten sich am unteren Rand der Ansicht oder direkt über der Registerkartenleiste befinden. Dann sollten Sie den y-Ursprung in Bezug auf die Höhe Ihrer Ansicht oder in Bezug auf die Registerkartenleiste (falls vorhanden) verwenden. Wir haben auch die Eigenschaft zur automatischen Größenänderung. Ich hoffe das wird für dich funktionieren
quelle
Anstatt eine Reihe von Bedingungen zu verwenden, können Sie die Größe Ihrer Ansicht automatisch anhand der Bildschirmgröße ändern.
In meinem Fall möchte ich eine Ansicht, die den Raum zwischen einigen Eingabefeldern oben und einigen Schaltflächen unten ausfüllt, also oben links und unten rechts variabel, basierend auf der Bildschirmgröße. Meine App füllt die Bildansicht mit dem von der Kamera aufgenommenen Foto, sodass ich den gesamten verfügbaren Platz haben möchte.
quelle
Wenn Sie eine bereits vorhandene App in Universal konvertieren müssen, müssen Sie die entsprechende xib-Datei-> Dienstprogramme anzeigen-> Größeninspektor anzeigen auswählen.
Im Größeninspektor sehen Sie die automatische Größenanpassung. Mit diesem Tool können Sie in eine vorhandene iOS-App konvertieren.
quelle
Wählen Sie mit xCode 5 unter Projekt> Allgemein die Option "In Asset-Katalog migrieren" aus.
Verwenden Sie dann "Im Finder anzeigen", um Ihr Startbild zu finden. Sie können es per Dummy auf 640 x 1136 bearbeiten und dann wie im Bild unten gezeigt in den Asset-Katalog ziehen.
Stellen Sie sicher, dass sowohl in iOS7 als auch in iOS6 R4 ein Bild mit einer Größe von 640 x 1136 vorhanden ist. Wenn Sie die App das nächste Mal starten, verschwinden die schwarzen Balken und Ihre App verwendet einen 4-Zoll-Bildschirm
quelle
Bemerkenswerter Punkt - In neuem Xcode müssen Sie diese Bilddatei [email protected] zu Assets hinzufügen
quelle
Verwenden Sie die
Auto Layout
Funktion für Ansichten. Es wird automatisch an alle Auflösungen angepasst.Erstellen Sie zwei xibs für einen Controller mit dem Controllernamen mit dem Suffix ~ iphone oder ~ ipad. Zur Kompilierungszeit nimmt Xcode die richtige xib basierend auf dem Gerät.
Verwenden Sie Größenklassen, wenn Sie eine einzelne xib für iPhone und iPad erstellen möchten, wenn die Ansicht einfach genug ist, um auf iPhone und iPad zu portieren.
quelle
Beim Testen auf iOS-Geräten und iOS-Simulatoren tritt ein kleines Problem auf. Es scheint, dass der Simulator (XCode 6.0.1) geschaltete Werte für Breite und Höhe in liefert
[[UIScreen mainScreen] bounds].size
je nach Ausrichtung des Geräts .Dies kann also ein Problem bei der Bestimmung der richtigen physischen Bildschirmgröße sein. Dieser Code hilft auch, alle 2014 zu unterscheiden. IPhone-Modellgenerationen:
Es kann auch leicht geändert werden, um zwischen z. B. iPhone6 und iPhone6 + zu unterscheiden.
quelle
Ich würde vorschlagen, die Autoresizing-Maske in Ihren Anwendungen entsprechend Ihrer Benutzeroberfläche zu verwenden. Dies spart viel Ärger und ist besser als die Erstellung einer anderen Benutzeroberfläche für iPhone 4 und 5-Bildschirme.
quelle