Spędziłem dwa dni na wypróbowywaniu różnych rozwiązań dla podejść Mixed i Pure Autolayout, aby osiągnąć coś, co było trywialną konfiguracją widoku przewijania przed automatycznym układem, a teraz jest to oficjalne - muszę być zbyt głupi. Ustawiam to głównie w Storyboard (cóż, tak po prostu jest).
Oto moja prośba o pomoc.
Viewtree:
UIView
-UIView
-UIView
..-UIScrollview
...-UIButton
...-UIButton
...-UIButton
Przyciski mają przewijać się w poziomie (od lewej do prawej i odwrotnie). Może ktoś proszę dać mi znać, jak ustawić ograniczenia do osiągnięcia tego przy użyciu czystego autoLayout ???
-
Wypróbowałem podejście mieszane, takie jak:
UIView
- UIView
- UIView
..-UIScrollview
...-UIView (contentview)
....-UIButton
....-UIButton
....-UIButton
... ograniczenia i ustawienie stałej szerokości i wysokości dla osób contentview
i translatesAutoresizingMaskIntoConstraints
ustawienia, jak na Apple TechNote. Przyciski i widok przewijania są konfigurowane przy użyciu ograniczeń. Powoduje to przewijanie widoku scrollview (yay), ale niestety przewija się za daleko! O ile wiem, szerokość przewijania jest w jakiś sposób podwojona w stosunku do tego, co ustawiłem dla widoku treści na ??? !!! ???
Wypróbowałem również podejście w pełni autoukładane, zarówno z, jak contentview
i bez. Wszystkie widoki translatesAutoresizingMaskIntoConstraints=NO
oprócz self.view
. Przyciski mają stałe ograniczenia szerokości / wysokości i są przypięte do wszystkich czterech krawędzi widoku przewijania. Nic się nie przewija.
Jestem więc całkowicie zaskoczony, dlaczego nie mogę sprawić, by działał poprawnie. Każda pomoc jest mile widziana, a jeśli potrzebujesz dodatkowych informacji, zapytaj!
ZAKTUALIZOWANY Zrzut ekranu z rozwiązaniem - ograniczenia buttonZ:
EDYCJA @ Jamie Forrest Okazuje się, że rozwiązaniem jest błędne ograniczenie końcowe na ostatnim przycisku. Zamiast 6441 wartość, którą ustawiłem, była ujemna, -6441. Trudność polega na tym, że podczas ustawiania wartości w scenorysie na pasku narzędzi Pin dostępne są dwie opcje:
Bieżąca wartość kanwy jest ujemna (co prowadzi do braku przewijania), a poniższa opcja jest dodatnia (aktywacja przewijania). To znaczy, że nie jestem głupi, ale przynajmniej na wpół ślepy. Chociaż, na moją obronę, czy nie jest trochę niepokojące, że XCode nie wyświetla błędu dla „nieprawidłowego” ustawienia?
EDITED PONOWNIE Teraz to zabawne ... zmiana wartości końcowej z -6441 (bez przewijania) na 6441 z włączonym przewijaniem. Ale mój stary przyjaciel powrócił „zbyt duży rozmiar treści”, co spowodowało, że rozmiar treści był dwa razy większy niż powinien! Rozwiązaniem umożliwiającym uzyskanie prawidłowego przewijania zawartości było ustawienie końcowego ograniczenia na ZERO! Nie jest to oczywiste podczas pracy w Storyboard, ale patrząc na kod @Infinity James, tak powinno być.
contentSize
się z UIScrollView
użyciem tylko układ auto. I to contentSize
określa, ile możesz przewijać. Więc w końcu będziesz musiał to ustawić ręcznie. W pozostałej części można użyć ograniczeń układu, aby ustawić ramki widoku względem siebie.