2014-12-16 11 views
5

W Storyboard utworzyłem UIView, które ma być wyśrodkowane dokładnie w środku kontrolera widoku z automatycznym układem i działa dobrze na różnych rozmiarach urządzeń. Nazywam to largerView.Wyrównaj utworzone programowo centrum UIView z centrum widoku automatycznego układu

Jednak chciałbym programowo utworzyć mniejszą UIView nazywa smallerView i centrum this view tak że .

używam do problemu gdzie podano, że układ auto jest używany na largerView, ilekroć użyć metody powyżej, mój smallerView nigdy faktycznie ośrodki z largerView.center. Zauważyłem, że zajmie to współrzędne środkowe largerView, tak jak pojawiają się one w Storyboard, w oparciu o konkretny układ urządzenia, którego używam (w tym przypadku poprzednie wymiary iPhone'a 5), ​​ale nie zaktualizowane centrum, na które ma wpływ automatyczny układ .

Podobny problem może dotyczyć tutaj discussed, z tym że jest oparty na Swift. Wiem, w jaki sposób ograniczenia są tworzone programowo, ale nie jestem pewien, jak uzyskać "odświeżone" współrzędne widoku po zastosowaniu automatycznego układu.

Dzięki!

Odpowiedz

8

Trzeba zastąpić następujące metody w kontrolerze widoku:

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

Świetnie, to załatwiło sprawę! Dzięki – daspianist

7

Jeśli smallerView jest subview z largerView:

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

Jeśli smallerView mieć taką samą Superview jako largerView:

self.smallerView.center = self.largerView.center;