2014-10-14 8 views
6

Ich habe ein Projekt für iPhone und iPad. Das iPad benötigt einen Split View Controller. Erstellen wir zwei separate Storyboards? Eine für iPhone (mit Auto-Layout können wir alle Geräte unterstützen) und zwei für iPad. Mein Zweifel ist der Unterschied es nur in der ersten Sicht. Die Innenansichten wiederholen sich. Wie wird dein Ansatz mit dem Storyboard aussehen?Müssen wir 2 Storyboard für eine Universal-App verwenden?

Antwort

14

Keine zwei Storyboards mehr in iOS 8 erforderlich! Wir können Adaptive UI benutzen, um das gleiche Storyboard auf alle verschiedenen Größen von iPad und iPhone zuzuschneiden.

Sie können http://www.raywenderlich.com/83276/beginning-adaptive-layout-tutorial

hier ein schönes Tutorial Und Sie können auch ein schönes Video von Apple in WWDC-Konferenz here und die Suche nach „Building Adaptive Apps mit UIKit“

Grundsätzlich können wir verschiedene handhaben finden Bildschirmgrößen durch Definition von Elementen unserer Benutzeroberfläche im Storyboard für verschiedene Größenklassen. Wir können auch verschiedene Auto-Layout-Einschränkungen für verschiedene Größenklassen definieren.

Und das sind alle möglichen Größenklassen in iOS 8 (Ich habe das Bild von https://medium.com/@getaaron/ios-8-development-tips-for-iphone-6-and-iwatch-1c772554ffe0)

enter image description here

+0

Danke für die Links! –

1

Auf iOS 8, Sie brauchen nicht zwei Storyboards, da eine einzige Storyboard sowohl iPhone umgehen kann und iPad; Außerdem wird UISplitViewController auf dem Telefon unter diesem Betriebssystem unterstützt.

Für frühere Versionen von iOS benötigen Sie zwei Storyboards.

6

Für iOS 7 und früher, ja, verwenden Sie zwei Storyboards und zwei völlig unterschiedliche Schnittstellen, da es keinen Split-View-Controller auf dem iPhone gibt.

Verwenden Sie für iOS 8 ein Storyboard und verwenden Sie den UISplitViewController sowohl auf dem iPad als auch auf dem iPhone. Erstellen Sie ein neues Projekt aus der Universal-Version der Xcode 6 Master-Detail App-Vorlage, um alles darüber zu sehen, wie es funktioniert! Es ist automatisch ein Split-View-Controller auf dem iPad und eine Navigationsoberfläche auf dem iPhone.

+0

Und hier ist mein Beispiel, das zeigt, wie man die ganze Sache für iOS 8 im Code erstellt, wenn man das Storyboard nicht benutzen will: https://github.com/matnteub/Programming-iOS-Book-Examples/tree/master/bk2ch09p488basicMasterDetail/MasterDetail – matt

1

Sie können viel mehr als nur zwei Storyboards haben. Wenn Sie die Klassengröße/das automatische Layout nicht anpassen können, um die Aufgabe eines zwischen iPhone und iPad freigegebenen View-Controllers zu erfüllen, können Sie diesen Teil in separate Storyboards aufteilen. Sie können dann ein drittes Storyboard erstellen, das die freigegebenen View-Controller enthält. Sie können dieses Storyboard dann in Code instanziieren und es zum Instanziieren seiner View-Controller verwenden.

1

Ich schaffte es, dieses Szenario (Split-Controller in einem universellen Storyboard, das sowohl auf iOS8 als auch auf iOS7 funktioniert) zu haben, indem ich auf iOS7 und iPhone ein anderes Segment anrufe. Mein Szenario ist wie folgt:

Ich habe einen Login-Controller, der zu einem Hauptcontroller (modally) segue soll.

Wenn ich auf iOS8 oder iPad bin, benutze ich einen Segue-Punkt zum Split-View-Controller, während ich auf iOS7-iPhone ein anderes Segment benutze, das direkt auf den linken Nav-Controller des Split-Controllers zeigt (komplett umgangen).

Wenn Sie vom linken Controller ein Detail-Segment haben, das auf den rechten Nav-Controller zeigt (und Sie sollten) und wenn der Segment-Typ "Show Detail" ist (und es sollte), wird es wie ein normales Push-In funktionieren die iOS7-iPhone-Umgebung (was genau wir wollen).

Auf etwas, was ich jedoch bemerkte, wird der Ziel-Controller des Detail-Segments im IOS7-iPhone-Szenario zum Root-View-Controller des rechten Nav (obwohl das Segment auf das Nav zeigt), wenn Sie also Code haben die prepareForSegue Sie benötigen sie passen sie anders zu behandeln)

(zur Bestimmung, ob die Plattform IOS8 ist, und wenn ich auf dem iPhone/iPad Idiom ich benutze den Standard

[[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0 and UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
2

Selbst mit adaptiver UI Persönlich bevorzuge ich es, auf einem anderen Storyboard zu arbeiten, für komplexes Layout ist es einfacher und es wird nicht einfacher Setzen Sie das Layout für andere Bildschirmgrößen außer Kraft. Zu viele Einschränkungen können die Wartung schwieriger machen. Wenn Sie die Objekthierarchie verschieben, wird das Layout für den anderen Bildschirm unterbrochen.

Als Bonus, wenn Sie mit Low-Level-Mac wie Mackbook Air oder Old Mac arbeiten, reduzieren Sie auch die Ladezeit und erhalten eine bessere Reaktionsfähigkeit, wenn Sie mit Storyboard arbeiten.

Verwandte Themen