Istnieje bardzo dobre wyjaśnienie automatycznego układu i obrotów w poście Matthijs Hollemans. Można go znaleźć tutaj: http://www.raywenderlich.com/20881/beginning-auto-layout-part-1-of-2
Zazwyczaj potrzeba około 4 wiązań, aby poprawnie ustawić widok. Jeśli moje widoki mają stały rozmiar, wolę przypiąć wysokość i szerokość. Następnie możesz użyć wiodących i ograniczonych ograniczeń przestrzeni, aby robić, co chcesz. Na przykład, można ustawić IBOutlets dla wiodących i górne ograniczenia przestrzeni dla swoich poglądów:
@interface ViewController : UIViewController {
IBOutlet NSLayoutConstraint *_leadingSpaceConstraint;
IBOutlet NSLayoutConstraint *_topSpaceConstraint;
}
Następnie kontrolować-drag z wylotem do przymusu. Teraz możesz bezpośrednio zmienić widok ograniczenie od kodu:
_leadingSpaceConstraint.constant = NEW_CONSTRAINT_VALUE;
Aby zatwierdzić zmiany, trzeba zadzwonić:
[self.view layoutIfNeeded];
A jeśli chcesz zrobić to animowany:
[UIView animateWithDuration:0.25
animations:^{
[self.view layoutIfNeeded];
}];
Myślę, że będzie działać w trybie willAnimateRotationToInterfaceOrientation, ponieważ nie trzeba łamać żadnych ograniczeń za pomocą tego podejścia.
Kilka przykładów: masz dwa kwadratowy widoku w orientacji pionowej, jeden pod drugim. Na przykład ustaw ich ograniczenia "wiodącej przestrzeni do podglądu" na 20. Następnie ustaw "górną przestrzeń, aby wyświetlić ograniczenie" na 20 dla pierwszego widoku i na 120 dla drugiego. Będzie to nasza domyślna konfiguracja.
Następnie po obrocie należy ponownie obliczyć ograniczenia. Teraz ustaw oba górne ograniczenia na 20, a wiodące ograniczenia na odpowiednio 20 i 120. Następnie zatwierdz zmiany za pomocą layoutIfNeeded.
Mam nadzieję, że to pomoże.
proszę tutaj wpisać kod –
@Makleesh: tak masz rację wiele problemów pojawia się podczas korzystania z automatycznego układu, ale uważam, że są dość przydatne .. tak, wygląda na to, nowy sposób robienia rzeczy, lepiej dostać w to teraz niż późno. – vitaminwater
@Waseem: Naprawdę nie mam kodu do opublikowania ... ponieważ powiedziałem, że ograniczenia są zerwane jeszcze przed wykonaniem mojego kodu, więc tak naprawdę nie wiem, jaki kod mógłbym opublikować! – vitaminwater