iphone / ipad Orientierung Handhabung
Dies ist mehr eine Allgemeine Frage für die Menschen zu, geben Sie mir Führung auf, im Grunde, Im Lern-iPad - /iPhone-Entwicklung und schließlich über die multi-orientation support-Frage stellen.
Ich sah einen fairen Betrag von doco, und mein Buch "Beginning iPhone 3 Development" hat ein nettes Kapitel.
Aber meine Frage ist, wenn ich programmgesteuert ändern, meine Steuerelemente (oder sogar verwenden Sie unterschiedliche Ansichten für jede Orientierung), wie auf der Erde, um die Menschen pflegen Ihre code-Basis? Ich kann mir nur vorstellen, dass so viele Probleme mit spaghetti-code/Tausende von "wenn" prüft alle über dem Platz, es würde mich wahnsinnig machen eine kleine änderung an den UI-Anordnung.
Hat jemand Erfahrung im Umgang mit diesem Thema? Was ist ein schöner Weg, um es zu Steuern?
Vielen Dank
Daneben
InformationsquelleAutor der Frage Mark | 2010-05-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich dies mit zwei einfachen Methoden in meinem view-controller:
Zu halten, reinigen Sie Sie könnte leicht aufteilen der Anpassungen/laden/etc. mit Methoden genannt, von innerhalb der einzelnen
if-else
bedingte.InformationsquelleAutor der Antwort Alex Reynolds
Es hängt wirklich davon ab, was es ist, die Sie auslegen.
Wenn Sie einen Blick auf die Apple-Einstellungen Anwendung, können Sie sehen, dass Sie die Verwendung von Tabellen-Ansichten für layout, benutzerdefinierte Zellen für die meisten Zeilen. Mit, dass, können Sie mit einer einfachen Schnittstelle zu drehen, ziemlich günstig, nur füllen die Breite der Zellen. Dies gilt auch für Dinge wie E-Mail, wo der text Bearbeiten-Zellen in jeder Reihe. Und Tische können leicht transparent, mit nur buttons oder labels sichtbar, so dass Sie nicht Aussehen wie Tabellen.
Können Sie bekommen eine Menge Meilenzahl aus der autoresizingMask jedes UIView. Wenn Sie ein oder mehrere Elemente, die eine flexible Höhe, dann können Sie in der Regel eine Schnittstelle layout, das sieht gut aus in jeder Orientierung. Je nachdem, wie es aussieht, manchmal kann man nur pin alles auf die Spitze.
In seltenen Fällen, wenn alle interface-Elemente passen in ein Quadrat, die Sie gerade drehen Sie Sie in Position.
Es gibt zwei Zeiten, wenn Sie müssen explizit behandeln die Orientierung ändert. Man ist, wenn eine Ansicht bewegt, neben unter anderen auf rotation. Das andere ist, wenn Sie verschiedene Bilder für jede Orientierung, zum Beispiel, wenn Sie wollen immer die volle Breite.
Manchmal gibt es Möglichkeiten, um die Arbeit rund um diese beiden. Sie verwenden könnte, dehnbar Bilder oder beschränken Sie sich auf eine Ansicht pro Zeile. Oder Sie könnte gesperrt werden, Orientierung für bestimmte Ansichten.
Wenn Sie müssen, ändern Sie das layout von Ansichten, es gibt eine explizite Methode layoutSubviews. Sie sollten versuchen, mit allen Ihnen bedingte layout in diese eine Methode. Es wird nur aufgerufen, wenn der view-Grenzen ändern, zum Beispiel auf rotation, oder wenn Sie haben Platz gemacht für die Tastatur. Machen Sie eine benutzerdefinierte Ansicht für jede Ansicht, die Hierarchie, die Bedürfnisse zu reagieren, um eine Drehung, layout und Gestaltung der Untersichten von dort.
InformationsquelleAutor der Antwort drawnonward
Des iPhone SDK ist gebaut, um mit einer MVC-Architektur, so in der Theorie, wenn Sie alle Ihre Logik (Modell) getrennt von der Benutzeroberfläche (view), dann haben Sie nur sorgen über die UI in einem Punkt: Ihre view-Controller. Für diejenigen, die Sie könnte eine separate view-controller für jede Orientierung, jede von denen würde dann nur geladen werden mit einem if/else zu entscheiden, welche view-controller zu laden.
Die gleiche Idee gilt für das iPhone /iPad zu unterstützen, wo Sie können laden einer anderen view-controller, die mit größeren displays.
InformationsquelleAutor der Antwort Winder
Finden Sie unter dem folgenden link:
http://mustafashaik.wordpress.com/2010/11/17/handling-orientations-in-ipad/
InformationsquelleAutor der Antwort symadept
Kann ich keine Garantie für diesen code, und in aller Ehrlichkeit die oben willRotateToInterfaceOrientation funktioniert Super. Hier ist ein weiterer nehmen Sie mit FBDialog.m von Facebook für das iphone /ipad. (obgleich, ich denke, das war für ein webview)
hier ist der Kern
InformationsquelleAutor der Antwort johndpope
In Ihrer Frage, Sie schrieb:
Einen Weg, dies zu dodge zu machen, ist eine view-Hierarchie, spaltet der Umgang mit der iPhone/iPad-spezifische Veränderungen von Anfang an. Würde man nur einstellen, welche Ansicht wird zunächst für jedes Gerät geladen. Dann erstellen Sie ein viewcontroller, wie Sie normalerweise tun, aber Sie können auch eine Unterklasse der viewcontroller die Sie geschaffen haben. Eine Unterklasse für jedes Gerät. Das ist, wo Sie können die Geräte-spezifischen code, wie Ausrichtung der Handhabung. Wie diese:
Wenn Sie Interesse an diesem Ansatz, ich würde vorschlagen, dass Sie gelesen dieser Artikel. Er erklärt es auf eine sehr nette Art und Weise.
Eines der Dinge, die der Artikel erwähnt, ist dieser:
--Beginn Zitat -
Die Schönheit dieses Musters ist, dass wir nicht haben, zu verunreinigen unseren code mit Mist, der so aussieht:
---Ende Zitat -
Ich hoffe, das hilft. Viel Glück!
InformationsquelleAutor der Antwort matsr