2014-12-16 14 views
5

Ho creato uno UIView in Storyboard che deve essere centrato esattamente al centro del controller di visualizzazione con layout automatico e funziona perfettamente su diverse dimensioni del dispositivo. Lo chiamo largerView.Allinea un centro di UIView creato a livello di codice con un centro di visualizzazione layout automatico

Tuttavia, vorrei creare un più piccolo di programmazione UIView chiamato smallerView e centro l'questo punto di vista in modo che .

Sono in esecuzione in un problema per cui, dato che il layout auto viene utilizzato su largerView, ogni volta che uso il metodo di cui sopra, il mio smallerView mai realmente centri con largerView.center. Ho notato che prenderà le coordinate del centro di largerView come appaiono in Storyboard, in base al layout specifico del dispositivo che sto usando (in questo caso, le dimensioni dell'iPhone 5 precedenti), ma non al centro aggiornato come interessato dal layout automatico .

Un problema simile potrebbe essere discussed qui, tranne che si basa su Swift. So come vengono creati i vincoli a livello di codice, ma non so come ottenere le coordinate "aggiornate" di una vista dopo l'applicazione del layout automatico.

Grazie!

risposta

8

È necessario eseguire l'override del metodo seguito nel controller della vista:

- (void)viewDidLayoutSubviews 
{ 
    [super viewDidLayoutSubviews]; 
    self.smallView.frame.center = self.largeView.frame.center; 
} 
+0

Grande, questo ha fatto il trucco! Grazie – daspianist

7

Se lo smallerView è visualizzazione secondaria di largerView:

self.smallerView.center = CGPointMake(self.largerView.frame.size.width/2, self.largerView.frame.size.height/2); 

Se lo smallerView hanno lo stesso superview come largerView:

self.smallerView.center = self.largerView.center; 
Problemi correlati