Ich habe eine iPhone
Anwendung, die ein Storyboard hat. Jetzt möchte ich auch eine iPad
Anwendung bereitstellen . Also fragte ich mich, ob es eine Funktion gibt, mit der ich mein iPhone
Storyboard in ein iPad
Storyboard konvertieren kann .
Um genau zu sein:
Gibt es eine ähnliche Funktion oder gibt es nur den manuellen Weg?
Antworten:
Ich habe eine Art Lösung gefunden:
Dupliziere dein iPhone-Storyboard und benenne es um
MainStoryboard_iPad.storyboard
Schließen Sie Xcode und öffnen Sie diese Datei in einem beliebigen Texteditor.
Suchen Sie nach
targetRuntime="iOS.CocoaTouch"
und ändern Sie es intargetRuntime="iOS.CocoaTouch.iPad"
Ändern Sie den Code im MainStoryboard_iPad.storyboard von:
<simulatedScreenMetrics key="destination" type="retina4"/>
zu<simulatedScreenMetrics key="destination"/>
Speichern Sie nun alles und öffnen Sie Xcode erneut. Das iPad-Storyboard hat den gleichen Inhalt wie die iPhone-Datei, aber alles könnte durcheinander geraten.
Das hat mir Stunden gespart - hoffentlich hilft dir das
quelle
start a bounty
unter der Frage, wählen Sie den gewünschten Betrag undReward existing answer
...<simulatedScreenMetrics key="destination" type="retina4"/>
nach<simulatedScreenMetrics key="destination"/>
Wenn Sie ein universelles Projekt erstellt hätten, wäre standardmäßig ein leeres iPad-Storyboard erstellt worden. Sie müssen lediglich das iPhone-Storyboard auswählen, alle auswählen (Befehl + A), kopieren (Befehl + C) und es in das iPad-Storyboard einfügen. Stellen Sie sicher, dass Sie den Einstiegspunkt vom leeren Storyboard in das neu kopierte Storyboard verschieben, bevor Sie kompilieren.
quelle
Das hat bei mir nicht ganz funktioniert. Ich habe etwas anderes gemacht.
<scenes> <!--Contents View Controller-->
</class> </classes>
Das hat bei mir funktioniert. Ich habe ein neues Layoutout mit allen angeschlossenen Steckdosen erhalten, was mir allein ein paar Stunden erspart hat.
quelle
.storyboard
Dateien und klicken SieOpen As > Source Code
, um das unformatierte XML anzuzeigen.Beim Lesen vieler Threads zum Stackoverflow stellte ich fest, dass die Lösung Folgendes ist:
1.Duplizieren Sie Ihr iPhone-Storyboard und benennen Sie es in MainStoryboard_iPad.storyboard um
2. Klicken Sie mit der rechten Maustaste auf das Storyboard -> "Öffnen als" -> "Quellcode".
3.Suchen Sie nach targetRuntime = "iOS.CocoaTouch" und ändern Sie es in targetRuntime = "iOS.CocoaTouch.iPad".
5.Suchen Sie nach
<simulatedScreenMetrics key="destination" type="retina4"/>
und ändern Sie es in<simulatedScreenMetrics key="destination"/>
4. Speichern Sie jetzt alles und klicken Sie mit der rechten Maustaste auf MainStoryboard_iPad.storyboard "Öffnen als" -> "IOS StoryBoard". 5. Möglicherweise müssen Sie auch Ihre Einschränkungen ändern. Das ist alles was du getan hast.
quelle
quelle
1 - Erstellen Sie Ihre
"MainStoryboard_iPad.storyboard";
2 - Klicken Sie mit der rechten Maustaste auf Sie
"MainStoryboard_iPhone.storyboard"
und "Öffnen als -> Quellcode". Kopiere alles;3- Klicken Sie mit der rechten Maustaste auf Sie
"MainStoryboard_iPad.storyboard"
und "Öffnen als -> Quellcode". Alles einfügen. Jetzt suchen und ändern:targetRuntime="iOS.CocoaTouch" to targetRuntime="iOS.CocoaTouch.iPad"
type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" to type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.iPad.XIB"
4 - Speichern. Jetzt wieder öffnen, aber mit dem Interface Builder. Sie müssen nur neu arrangieren.
Diese Methode kann auch für .xib-Dateien verwendet werden
quelle
Dies geht in die andere Richtung, aber ich konnte in meinem iPad-Storyboard (~ 35 Szenen) alles auswählen und kopieren und in mein iPhone-Storyboard einfügen. Die Szenengrößen wurden automatisch angepasst. Ich habe nur zwei Probleme gesehen, ich musste UISplitViewController ersetzen (da es nur das iPad ist), und der Standardhintergrund wurde transparent statt grau (ich arbeite immer noch daran, dies richtig zu beheben, ohne den Hintergrund für alles manuell festzulegen).
BEARBEITEN: Der Standardhintergrund für UITableView im Attributinspektor scheint ziemlich seltsam zu sein. Ich musste den Hintergrund manuell auf "Hintergrundfarbe der Gruppentabellenansicht" für gruppierte Tabellenansichten und "Weiße Farbe" für nicht gruppierte Tabellenansichten einstellen. Es wurde dann als "Standard" angezeigt (ich nehme an, da es dann mit einem fest codierten Wert übereinstimmte). - Noch einfacher, der Wechsel von "Gruppiert" zu "Statisch" und zurück scheint die Standardfarbe zurückzusetzen.
quelle
Hier ist etwas, das mir Stunden gespart hat und denen von Ihnen mit Python-Kenntnissen helfen könnte.
Ich habe in den letzten zwei Monaten eine App erstellt, die sich darauf konzentriert, nur das iPad zu verwenden und die UX mit dem Team zu wiederholen.
Heute konzentrierte ich mich auf den Aufbau der iPhone-Version und befolgte die obigen Schritte (danke!), Aber ich wollte dann nicht die Größe aller UI-Elemente aus den iPad-Dimensionen im visuellen Storyboard-Editor ändern müssen.
Also habe ich dieses kleine Python-Jig-Skript geschrieben, um die Storyboard-Datei nach x, y, Breite, Höhe zu durchsuchen und alles um das Verhältnis 320./768 zu verkleinern. Erlaubte mir dann, mich nur auf Feineinstellungen zu konzentrieren.
Kopieren Sie Ihr iPad-Storyboard in eine neue Datei. (zB iPhoneStoryboard.storyboard)
Führen Sie das folgende Skript mit dem kopierten Storyboard-Dateinamen als erstem Parameter aus.
Generiert eine Ausgabedatei mit dem Suffix _adjusted.storyboard (z. B. iPhoneStoryboard.storyboard_adjusted.storyboard).
Ich hoffe es hilft...
quelle
Gehen Sie zu Ihrer Zielübersicht und ändern Sie die Geräte in Universal. Stellen Sie dann die iPad-Version auf ein beliebiges Storyboard ein, einschließlich eines kopierten und umbenannten, wenn Sie möchten.
quelle
Nur als kurze Nachricht an diejenigen, die vielleicht mein Problem damit hatten:
Mein Problem:
Der Storyboard-Inhalt wurde gut in eine neue Board-Datei kopiert, die ich hinzugefügt habe. Es würde jedoch keine Änderungen an meinem bereitgestellten iPad vornehmen. Als ich bemerkte, dass ich das festgelegte Storyboard für das Build-Ziel umschalten musste (siehe Bild), wurden die Änderungen angezeigt.
Ich würde ein Bild posten, wenn ich die Punkte hätte, aber die Einstellung befindet sich in:
Projektnavigator auf der linken Seite Quellmenü, Stammziel der allgemeinen Registerkarte Projekt (mittlerer Bereich), Bereitstellungsinformationen (zweite Unterüberschrift), wobei die Registerkarte iPad-Schaltfläche ausgewählt ist.
Wählen Sie von dort aus Ihr Storyboard unter "Hauptoberfläche".
Vielen Dank für den Beitrag, ich hoffe, diese Erwähnung hilft einem Haken irgendwo.
quelle
Nur zum Spaß musste ich unter XCode 5.1 und iOS 7.1 auch die Werte von "toolVersion" und "systemVersion" folgendermaßen ändern:
Ohne dies würde die neue Storyboard-Datei nicht kompiliert werden
quelle
Mit den XCode6-Größenklassen müssen Sie das Storyboard nicht mehr in ein iPad konvertieren. Das gleiche Storyboard kann sowohl für das iPhone als auch für das iPad verwendet werden, sodass Sie nicht zwei Dateien auf dem neuesten Stand halten müssen.
Das resultierende Storyboard ist mit iOS7 + kompatibel.
Lesen Sie hier mehr darüber: https://developer.apple.com/library/ios/recipes/xcode_help-IB_adaptive_sizes/chapters/AboutAdaptiveSizeDesign.html#//apple_ref/doc/uid/TP40014436-CH6-SW1
Verwenden Sie Größenklassen, damit ein Storyboard oder eine XIB-Datei mit allen verfügbaren Bildschirmgrößen arbeiten kann. Dadurch kann die Benutzeroberfläche Ihrer App auf jedem iOS-Gerät verwendet werden.
quelle
Für Xcode10
Einfach duplizieren
Main.storyboard
Benennen Sie dann die Dateien in
Main_iPad.storyboard
und umMain_iPone.storyboard
Stellen Sie die entsprechenden Namen ein
.plist
4.Wählen Sie einfach das richtige .storyboard aus, das konfiguriert werden soll
quelle
Diese Funktionalität ist jetzt integriert. Wenn Sie beispielsweise die Projekteinstellungen unter Bereitstellungsinformationen -> Geräte vom iPhone auf Universal ändern, wird der folgende Dialog angezeigt:
quelle
Ich bin diesem Thread gefolgt, als ich gestern von demselben Problem betroffen war. Die Schritte, denen ich folgte
targetRuntime="iOS.CocoaTouch"
intargetRuntime="iOS.CocoaTouch.iPad"
<simulatedScreenMetrics key="destination" type="retina4"/>
nach<simulatedScreenMetrics key="destination"/>
Das war es .. Vielen Dank für Ihre Hilfe ..
quelle
Der einfachste und zuverlässigste Weg, dies zu tun, ist das Kopieren und Einfügen von Ihrem iPad-Storyboard.
Sie müssen die Größe ändern, aber es kann schneller sein, als das gesamte Storyboard neu zu erstellen.
quelle
Es gibt eine wirklich einfache Lösung für Xcode-Versionen, die Größenklassen unterstützen (Getestet in Xcode 7, der aktuellen Version zum Zeitpunkt des Schreibens). Aktivieren Sie das Kontrollkästchen "Größenklassen verwenden" in einer Storyboard-Datei ( Dateiinspektor ) und bestätigen Sie das angezeigte Dialogfeld. Deaktivieren Sie dann dasselbe Kontrollkästchen - Xcode fragt Sie, ob Sie dieses Storyboard mit einem iPhone oder iPad verwenden möchten, und konvertieren Sie die darin enthaltenen Bildschirme entsprechend. Die Storyboard-Datei muss nicht direkt bearbeitet werden . Kopieren Sie für iPad und iPhone einfach dasselbe Storyboard und konfigurieren Sie eines für iPad und eines für iPhone mit der beschriebenen Methode.
Und bevor jemand vorschlägt, Größenklassen zu verwenden - obwohl großartig, sind sie für stark angepasste Benutzeroberflächen wie Spiele usw. Weniger geeignet
quelle
Ein anderer Versuch
Fügen Sie einen leeren View-Controller mit Navigation-Controller im iPad-Storyboard hinzu
Ändern Sie die Klasse in die Klasse Ihres ersten ViewControllers für das iPhone, "fooViewController".
Fügen Sie den Storyboard-Identifier im iPhone-Storyboard "fooViewController_storyboard_identifier" für den ersten ViewController hinzu
Gehen Sie zu "fooViewController.m"
Bool hinzufügen Variable bool
nibWasLoadForIpad=false
Gehen Sie zu
viewDidLoad
-Methode(ps. Wissen Problem ist, dass die Ansichtshintergründe auf weiß gesetzt werden)
quelle
Sie sollten einen Fehlerbericht mit Apple erstellen . Man kann sagen, es ist ein Duplikat von mir (10167030), das seit September 2011 geöffnet ist. Das Frustrierende aus meiner Sicht ist, dass die Funktion in Xcode 3 vorhanden war ...
quelle
Vielen Dank für die Antworten an alle.
Ich habe die obigen Schritte ausgeführt, aber als ich die App unter dem Simulator oder meinem iPad ausgeführt habe, wurde sie weiterhin nur mit dem iPhone-Storyboard verwendet.
Aus irgendeinem Grund hat Xcode (v5.0) die Datei app-Info.plist nicht aktualisiert, um das iPad-Storyboard einzuschließen, als ich das Zielgerät in Universal anstelle von iPhone geändert habe. Daher musste ich den folgenden Eintrag manuell hinzufügen ( Verwenden des Plist-Editors in Xcode):
Name der Haupt-Storyboard-Dateibasis (iPad) ==> MainStoryboard_iPad
quelle
Ich ändere mich nur (zusätzlich zu der Antwort von @tharkay):
und funktioniert super!
Ich benutze dies in XCode 8.3.3
quelle