2013-02-06 12 views
6

Mam storyboard, który jest zbudowany przy użyciu Auto Layout. W ramach tego scenariusza osadzam podklasę UIViewController (ButtonGridViewController) w kilku lokalizacjach, z których każda ma inny rozmiar. Widok ButtonGridViewController jest zdefiniowany w XIB.iOS: Automatyczny układ a automatyczne maskowanie - zmiana rozmiaru całego widoku do wypełnienia?

Potrzebuję całego widoku ButtonGridViewController, aby po prostu skalować do wypełnienia widoku, w którym go osadzam. Dzięki starej metodzie rozporek-i-sprężyna to było trywialne - po prostu ustawione wszystkie subviews do zmiany rozmiaru w obu kierunkach, i voila, bułka z masłem.

Jak wykonać to samo przy użyciu wiązań? Dla tego, co jest warte, xib zawiera tylko główny widok, który jest prostokątny i ma 4 widoki - każdy z nich - ułożone w siatkę 2x2. Chcę, aby wszystko, w tym przyciski I odstępy, skalowały i/lub rozciągały się, aby wypełnić widok, w którym się znajduje.

Dzięki!

+0

Co masz na myśli przez ankiety? Czy korzystasz z widoków kontenera? – rdelmar

+0

Widok kontenera w jednym przypadku; we wszystkich innych przypadkach, po prostu utworzenie instancji ButtonGridViewController i dodanie jej widoku jako podglądu do istniejącego programu UIView programowo. – DanM

+0

Jeśli nie ma powodu, dla którego nie można korzystać z widoków kontenerów dla wszystkich, byłoby to o wiele łatwiejsze. Widok automatycznie dopasuje się do widoku kontenera. – rdelmar

Odpowiedz

10

Aby osiągnąć to samo przy użyciu ograniczeń musisz ustawić początku, na końcu górnej i dolnej przestrzeni do SuperView 0. Patrz poniżej:

//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

To samo nie działa dla mnie. Mam taki sam scenariusz, w którym dodaję podgląd do mojego widoku. Widok jest w Storyboard, a subview w .xib. KIEDY dodam ograniczenia programowo jak wyżej, dostaję jednoczesne ograniczenia i łamie się ... –

Powiązane problemy