2013-07-31 4 views
8

Um den Portrait- und horizontal für eine UIView wie dies zu unterstützen:Kann Layout automatisch (Diagramm im Anhang) automatisch Layout?

+-------------------+ 
    | +---------------+ | 
    | |    | | 
    | |  Fixed  | | 
    | |  size  | | 
    | |  Square | | 
    | |    | | 
    | +---------------+ | Protrait 
    | +---------------+ | 
    | | Flexible C | | 
    | +---------------+ | 
    | +---+  +---+ | 
    | | A |  | B | | 
    | +---+  +---+ | 
    +-------------------+ 

    +----------------------------------+ 
    | +---------------+ +------------+ | 
    | |    | | Flexible | | 
    | | Fixed  | |  C  | | 
    | |  size  | +------------+ | 
    | | Square  | +---+ +---+ | 
    | |    | | A | | B | | 
    | +---------------+ +---+ +---+ | 
    +----------------------------------+ 
       Horizontal 

Muss ich die Unteransichten in willRotateToInterfaceOrientation manuell neu zu positionieren? Oder kann Autolayout es automatisch für mich tun?

  • B ist ein Knopf immer an bleibt unteren rechten
  • A ist ein Knopf relativ zu B positioniert (vorzugsweise auf der linken Seite von C auszurichten)
  • C für Text ist, der Größe flexibel ist
  • A und B ist unter C
+0

Ich sehe keinen Weg, wie Auto-Layout das ohne benutzerdefinierten Code tun könnte. Ich könnte mich jedoch irren. Sie müssen nur eine Einschränkung entfernen und festlegen. Wenn Sie zu Querformat wechseln, entfernen Sie die vertikale Ausrichtungsbeschränkung zwischen dem flexiblen C und dem Quadrat fester Größe und fügen Sie c eine obere Ausrichtungseinschränkung hinzu – Farthen

Antwort

6

In thi In diesem Fall sollten Sie in der Lage sein, die meisten Layout-Arbeiten automatisch auszuführen, jedoch mit ein paar leichten Anpassungen bei der Rotation.

Was ich vorschlagen würde ist enthalten Ansichten A, B und C in einem anderen UIView. Auf diese Weise ist das ausrichtungsabhängige Layout separat aus dem flexibel großen Layout. Es macht auch das Layout viel einfacher zu codieren!

Dann legen Sie den Blick auf den Platz und den Behälter Blick etwas wie folgt aus:

H:|-10-[squareView] 
V:|-10-[squareView] 
H:[containerView]-10-| 
V:[containerView]-10-| 
squareView.width == squareView.height 

Beachten Sie, dass der Blick auf den Platz immer mit der linken und oberen Rand des Superview ausgerichtet ist, während der Behälter Ansicht mit ausgerichtet ist, unten und rechts. Für ein Hochformat, würden Sie diese Einschränkungen hinzufügen:

V:[squareView]-10-[containerView] 
H:[squareView]-10-| 
H:|-10-[containerView] 

Und für eine Landschaft Orientierung, würden Sie diese Einschränkungen invertieren:

H:[squareView]-10-[containerView] 
V:[squareView]-10-| 
V:|-10-[containerView] 

, die nur für das gesamte Layout ist, so dass die flexible Auslegung der Die Unteransichten der Containeransicht liegen bei Ihnen. Hoffe das hilft!