2013-07-31 3 views
8

per supportare sia verticale e orizzontale per un UIView come questo:Può eseguire il layout automatico di questo schema (schema allegato) automaticamente?

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

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

Ho bisogno di riposizionare manualmente i sub-viste in willRotateToInterfaceOrientation? O può Autolayout farlo automaticamente per me?

  • B un pulsante rimane sempre in basso a destra
  • A è un pulsante posizionato relativamente al B (preferibilmente adeguamento alla sinistra del C)
  • C è per il testo, la dimensione è flessibile
  • A e B è inferiore a C
+0

Non vedo come si possa eseguire l'autocalay senza codice personalizzato. Potrei sbagliarmi comunque. Devi solo rimuovere e impostare un vincolo però. Quando si ruota su Orizzontale, rimuovere il vincolo di allineamento verticale tra C flessibile e quadrato a dimensione fissa e aggiungere un vincolo di allineamento superiore a c – Farthen

risposta

6

In thi Nel caso in cui si dovrebbe essere in grado di ottenere la maggior parte del lavoro di layout fatto automaticamente, ma con un paio di piccoli aggiustamenti alla rotazione.

Quello che vorrei suggerire è di contenere visualizzazioni A, B e C in un altro UIView. In questo modo, il layout dipendente dall'orientamento è separato dal layout di dimensioni flessibili. Rende anche il layout molto più semplice da codificare!

Poi si lay out la vista piazza e la vista del contenitore un po 'come questo:

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

Si noti che la vista piazza è sempre allineato con la sinistra e in alto del superview, mentre la vista contenitore è allineata con in basso e a destra. Per un orientamento verticale, si dovrebbe aggiungere questi vincoli:

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

E per un orientamento orizzontale, si potrebbe invertire questi vincoli:

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

Questo è solo per il layout generale, in modo che il dimensionamento flessibile del le visualizzazioni secondarie di vista contenitore sono a tua discrezione. Spero che questo ti aiuti!

Problemi correlati