2013-07-31 16 views
8

Aby obsługiwać zarówno portret i poziome dla UIView tak:Czy układ automatyczny może zostać automatycznie włączony (załączony schemat)?

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

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

muszę ręcznie ponownie pozycję sub-ciami w willRotateToInterfaceOrientation? Czy może Autolayout zrobić to automatycznie dla mnie?

  • B jest przycisk zawsze pozostaje w dolnej prawej
  • A jest przycisk umieszczony względem B (korzystnie dostosować do lewej stronie C)
  • C jest tekstu, rozmiar jest elastyczny
  • A i B jest poniżej C
+0

Nie widzę sposobu, w jaki autolayout mógłby to zrobić bez niestandardowego kodu. Może się mylę. Musisz tylko usunąć i ustawić jedno ograniczenie. Podczas obracania do Pejzażu usuń pionowe wyrównanie wiązania między elastycznym C a kwadratem o stałym rozmiarze i dodaj ograniczenie wyrównania do c – Farthen

Odpowiedz

6

W tym W takim przypadku powinieneś być w stanie wykonać większość pracy układu automatycznie, ale z kilkoma delikatnymi korektami po rotacji.

To, co chciałbym zasugerować, to zawierający widoków A, B i C w innym UIView. W ten sposób układ zależny od orientacji to oddzielny od układu o elastycznym rozmiarze. Ułatwia również kodowanie układu!

Następnie rozłożyć kwadratowy widok i widok pojemnika nieco jak poniżej:

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

Zauważ, że widok placu zawsze jest wyrównany z lewej i górnej części SuperView, natomiast widok pojemnika jest zgodna z w dolnej i prawej. Dla orientacji pionowej, należy dodać następujące ograniczenia:

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

A dla orientacji poziomej, należy odwrócić te ograniczenia:

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

To właśnie dla całego układu, tak elastyczny wymiarowanie widok podrzędny zbiornika zależy od Ciebie. Mam nadzieję że to pomoże!

Powiązane problemy