2013-02-06 23 views
6

Ho uno storyboard che viene creato utilizzando Auto Layout. All'interno di tale storyboard, sto incorporando una sottoclasse UIViewController (ButtonGridViewController) in diverse posizioni, ognuna delle quali ha una dimensione diversa. La vista di ButtonGridViewController è definita in xib.iOS: Auto layout vs autoresizingMask - ridimensionamento dell'intera vista da riempire?

Quello che mi serve è l'intera vista dello ButtonGridViewController per ridimensionare semplicemente la vista in cui lo sto incorporando. Con il vecchio metodo struts-and-springs, questo era banale - basta impostare tutte le sottoview da ridimensionare in entrambe le direzioni, e voilà, pezzo di torta.

Come faccio a ottenere lo stesso risultato utilizzando i vincoli? Per quello che vale, lo xib contiene solo una vista principale, che è rettangolare, e ha 4 sottoview - ciascuno un pulsante - disposte in una griglia 2x2. Voglio tutto, inclusi i pulsanti E la spaziatura, per ridimensionare e/o allungare per riempire la vista in cui sta andando.

Grazie!

+0

Che cosa si intende per incorporare? Stai usando le visualizzazioni del contenitore? – rdelmar

+0

Visualizzazione contenitore in un caso; in tutti gli altri casi, è sufficiente creare un'istanza di ButtonGridViewController e aggiungerne la visualizzazione come sottomenu a un UIView esistente a livello di programmazione. – DanM

+0

Se non esiste un motivo per cui non è possibile utilizzare le visualizzazioni contenitore per tutti, ciò renderebbe molto più semplice. La vista si adatterà automaticamente alla vista del contenitore. – rdelmar

risposta

10

per realizzare la stessa cosa con i vincoli necessari per impostare il leader, finale, lo spazio superiore e inferiore al superview a 0. Vedere di seguito:

//load the ButtonGridViewController from a xib 
[[NSBundle mainBundle] loadNibNamed:@"..." owner:self options:nil]; 

//get the view add it 
[self.view addSubView:self.myGridView]; 

//turn off springs and struts 
[self.view setTranslatesAutoresizingMaskIntoConstraints:NO]; 

//add constraints to fill parent view 
NSArray *arr; 

//horizontal constraints 
arr = [NSLayoutConstraint constraintsWithVisualFormat:@"|[vw]|" 
               options:0 
               metrics:nil 
               views:@{@"vw":self.myGridView}]; 
[self.view addConstraints:arr]; 

//vertical constraints 
arr = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[vw]|" 
               options:0 
               metrics:nil 
                views:@{@"vw":self.myGridView}]; 
[self.view addConstraints:arr]; 
+1

La stessa cosa non funziona per me. Ho lo stesso scenario in cui sto aggiungendo una sottoview alla mia vista. La vista è in Storyboard e la visualizzazione secondaria è in .xib. Quando aggiungo i vincoli a livello di codice come sopra, ottengo vincoli simultanei e si rompe ... –

Problemi correlati