Ich habe eine Ansicht, die die Anzeige im Quer- und Hochformat unterstützt, wobei sich die Steuerelemente beim Wechseln von einem zum anderen bewegen. Ich mache das gerade, indem ich die .center-Einstellung für jedes meiner Steuerelemente einstelle, wenn der Benutzer das Telefon dreht. Das Problem ist, dass dies mühsam ist und viel Code erfordert, und scheint den Zweck der Verwendung von Interface Builder an erster Stelle zu besiegen.
Meine Frage ist: Gibt es eine Möglichkeit im Interface Builder für eine Ansicht mehrere Looks zu unterstützen (eine für Landscape One für Portrait)? Wenn nicht, wie machen andere Leute das mit IB? Richten Sie 2 Ansichten ein?
Bearbeiten: Nur um meine Landschafts- und Hochformatansichten zu verdeutlichen, sehen sie anders aus, ich möchte keine direkte Transformation, ich zeige die Daten tatsächlich im Querformat anders an
Wenn nötig, füge ich UIView
Objekte zu der Ansicht in IB hinzu, die ich ausgeblendet habe. Geben Sie ihm eine schöne Hintergrundfarbe, damit Sie es sehen können, und senden Sie es den ganzen Weg zum Hintergrund. Verwenden Sie dann den Rahmen dieser Ansicht, wenn Sie den Rahmen eines Objekts festlegen müssen. Wenn Sie viele davon haben, sollten Sie stattdessen UILabel
verwenden, damit Sie ihm in IB einen sichtbaren Namen geben können.
Wenn Sie sich Sorgen um Speicherprobleme machen, entfernen Sie einfach all diese zusätzlichen UIView
s in ViewDidLoad
und speichern Sie ihre Frame-Werte einfach im Member CGRect
s. Dies funktioniert natürlich nur dann, wenn Sie keine der Ansichten automatisch in der Größe anpassen oder neu positionieren, was Sie in diesem Fall sowieso nicht tun sollten. Ich mache das für die Größenänderung / Neupositionierung aus irgendeinem Grund, nicht nur wenn der Bildschirm rotiert.
Ich bin mir nicht 100% sicher, ob das möglich ist, aber haben Sie darüber nachgedacht, verschiedene View-Controller für Quer- und Hochformat zu verwenden?
Die AutoSize-Attribute von IBOutlet-Objekten im Größeninspektor von IB (Befehl 3) bieten einige sehr schöne Optionen zum automatischen Strecken und Positionieren von Objekten. Sie können die L / R- und T / B-Bildschirmpositionen sowie die relative Breite und Höhe steuern. Sie können nicht die volle Kontrolle über das Layout bekommen, aber die meisten grundlegenden Operationen sind da.
Die einzige Möglichkeit, mit der mehrere Ansichten in IB unterstützt werden können, besteht darin, die automatische Skalierungsmaske der Komponenten so einzustellen, dass sie entweder skaliert und / oder an Kanten verankert wird. Um ein völlig anderes Layout für jede Ausrichtung zu erstellen, müssen Sie eine Hoch- und Querformatansicht separat erstellen (jeweils in einer eigenen XIB) und zwischen ihnen programmatisch wechseln.
Tags und Links iphone cocoa-touch interface-builder