Potrzebne jest jedno ograniczenie dla każdego wydziału (przycisku), określając, że wysokość kontenera powinna być większa lub równa wysokości wydziału. Nadaj temu ograniczeniu wysoki priorytet, na przykład UILayoutPriorityRequired
(co jest domyślne).
Następnie dodaj jeszcze jedno ograniczenie na wysokości kontenera, określając, że ma ono wysokość równą zeru. Nadaj temu ograniczeniu niski priorytet, na przykład UILayoutPriorityLow
. Ponieważ układ automatyczny próbuje zminimalizować błąd niezaspokojonych ograniczeń, sprawi, że kontener będzie tak krótki, jak to możliwe, a jednocześnie spełnia wszystkie ograniczenia o wyższym priorytecie.
Podałem przykład w this gist. Produkuje ten wynik:

Niebieskie poglądy stały poziom. Widok tan jest super widokiem na niebieskie widoki, a jego wysokość jest ograniczona, jak opisałem powyżej. Przypięłam dno każdego z podzakresów do dna kontenera, ale zamiast tego możesz przypiąć wierzchołki lub centra Y.
Awesome, zadziałało. Chociaż jestem nieco zdezorientowany. Czy możemy dodać wiele ograniczeń wysokości do kontenera? Jeśli powiem, że wysokość kontenera powinna być większa niż równa subview1, a także subview2, dlaczego te dwie nie powodują konfliktu? Ponadto nie rozumiem twojego rozumowania za ostatnim ograniczeniem o niskim priorytecie. Próbowałem bez tego i to też działało. Czy to środek bezpieczeństwa? – Snowman
Jeśli jest to układ, który spełnia oba ograniczenia, wówczas wiązania nie są w konflikcie. W rzeczywistości definicja sprzecznych ograniczeń polega na tym, że nie można jednocześnie spełnić obu tych warunków. Załóżmy, że Twoje subviews mają wysokości 60, 80 i 100. Wtedy * dowolna * wysokość kontenera wynosząca 100 lub więcej może spełnić ograniczenia między wysokościami wyskoku i wysokością kontenera, więc ograniczenia nie są ze sobą w konflikcie. –
Ponieważ jakakolwiek wysokość kontenera co najmniej 100 spełni ograniczenia z podelementów, które właśnie opisałem, te ograniczenia same w sobie są niejednoznaczne: istnieje wiele zadowalających rozwiązań. Układ automatyczny nie narzeka na niejednoznaczność i może dać pożądany układ. Ale niektóre zmiany w aplikacji lub na iOS mogą sprawić, że układ automatyczny da układ, którego nie chcesz w przyszłości. Dodatkowe ograniczenie o niskim priorytecie chroni cię przed tym. –