Ich habe eine iPad-App mit einem Login-Bildschirm mit den Login-Steuerelementen in einer UIView.
Wenn sich das iPad im Hochformat befindet, habe ich den Login UIView in der Mitte und unten in der App, ziemlich genau über der Tastatur und das Firmenlogo befindet sich in einem UIImageView, das in der Mitte zentriert ist. Ich verwende AutoLayout-Einschränkungen, um das Unternehmenslogo nach oben und nach rechts zu ziehen, und die Login-UIView zog nach unten und rechts.
Wenn ich dies in die Landschaft drehe, ist der Effekt ungefähr so:
Ich möchte, dass es so aussieht
Ich möchte also, dass die beiden Elemente nebeneinander liegen, und ich möchte, dass sich die Login-UIView weiter rechts befindet. Der Abstand rechts von der UIView im Hochformat ist größer als im Querformat, und der Abstand von unten ist geringer als im Querformat. Ich könnte das über "center in container" erledigen, aber das funktioniert auch nicht im Landscape-Modus.
Ich habe die Technik in diesem Post , um Dinge im Querformat" Seite an Seite "zu sein, aber ich glaube nicht, dass es hier genügen wird, weil ich die Layouts innerhalb der" Ansichten "möchte auch bei Rotation anders sein.
Ich kann mir vorstellen, wie ich das programmatisch abstellen kann, aber ich kann mir nicht vorstellen, dass dies ein so einzigartiges Bedürfnis ist. Gibt es also einen Weg, nur Einschränkungen in IB zu nutzen, um das zu erreichen? Einige "das ist, was Beschränkungen in IB für" Weg entworfen wurden, möglicherweise mit Prioritäten arbeitend? Oder muss ich das nur im Code abziehen?
Sie können ein solches Verhalten unter Verwendung unterschiedlicher Prioritäten für Einschränkungen in Interface Builder erzielen. Für beide Ansichten ("Firmenlogo" und "Anmeldungsansicht") müssen Sie die Beschränkungen "vertikales Zentrum im Container" und "horizontales Zentrum im Container" mit etwas reduzierter Priorität einrichten. Als nächstes müssen Sie die Beschränkungen "Vertikaler Raum" und "horizontaler Raum" definieren, indem Sie Regeln mit Beziehungen wie "Weniger als oder gleich" verwenden.
Ich habe ein solches Verhalten nur mit dem Interface Builder erreicht.
Sie können auch "kleiner als oder gleich" mit "größer als oder gleich" kombinieren, indem Sie verschiedene Prioritäten verwenden, um das beste Ergebnis zu erzielen.
Anstatt die Elemente neu zu positionieren, sieht es so aus, als müssten Sie sie nur einzeln drehen. Richten Sie sie in einer Containeransicht ein, zentrieren Sie die Containeransicht in der View-Controller-Ansicht. Dann richten Sie einfach den Abstand zwischen den beiden Ansichten ein und richten Sie die Autorotation auf ihnen ein.
Tags und Links ios ipad autolayout landscape-portrait