Nigdy wcześniej nie pracowałem z ograniczeniami autoukładu . Mam małą nową aplikację, nad którą pracuję i zauważyłem, że widoki NIB są domyślnie ustawione na automatyczne układanie. Pomyślałem więc, że skorzystam z okazji, aby z tym popracować i spróbuję dowiedzieć się, dokąd zmierza Apple.
Pierwsze wyzwanie:
Muszę zmienić rozmiar MKMapView i chcę go animować do nowej pozycji. Jeśli zrobię to w sposób, do którego przywykłem:
[UIView animateWithDuration:1.2f
animations:^{
CGRect theFrame = worldView.frame;
CGRect newFrame = CGRectMake(theFrame.origin.x, theFrame.origin.y, theFrame.size.width, theFrame.size.height - 170);
worldView.frame = newFrame;
}];
... wtedy MKMapView „przyskoczy” z powrotem do swojej pierwotnej wysokości za każdym razem, gdy zostanie zaktualizowany widok rodzeństwa (w moim przypadku tytuł UISegmentedControl jest aktualizowany [myUISegmentedControl setTitle:newTitle forSegmentAtIndex:0]
).
Więc, co mam myśleć chcę zrobić, to zmienić więzy MKMapView z równym obszyty widoku nadrzędnego do bycia w stosunku do górnej części UISegmentedControl że został obejmujące:V:[MKMapView]-(16)-[UISegmentedControl]
Chcę, aby wysokość MKMapView została skrócona, tak aby niektóre elementy sterujące pod widokiem mapy były widoczne. Aby to zrobić, myślę, że muszę zmienić ograniczenie ze stałego widoku w pełnym rozmiarze na taki, w którym dół jest ograniczony do góry UISegmentedControl ... i chciałbym, aby był animowany, gdy widok kurczy się do nowego rozmiaru.
Jak się do tego zabrać?
Edytuj - ta animacja nie jest animowana, chociaż dół widoku przesuwa się natychmiast w górę o 170:
[UIView animateWithDuration:1.2f
animations:^{
self.nibMapViewConstraint.constant = -170;
}];
a nibMapViewConstraint
jest podłączony w IB do dolnego ograniczenia przestrzeni w pionie.