Jednym z podejść, które stosowałem w przeszłości, jest przeciągnięcie widoku przewijania poza jego widok w narzędziu do tworzenia interfejsu i ustawienie jego rzeczywistego rozmiaru na taki, jaki ma mieć rozmiar contentSize.
co nie jest z natury oczywiste w konstruktorze interfejsów to to, że możesz mieć niepowiązane widoki, które są przechowywane w końcówce, ale nie są częścią widoku głównego, dla którego jest ona przeznaczona.
w widoku, w którym chcesz, aby przewijany widok był aktywny, umieść prosty UIView, którego używasz jako miejsca. (po prostu możesz wizualnie zaprojektować jego lokalizację. Jeśli używasz tylko całego widoku, możesz pominąć ten krok i użyć drugiego fragmentu kodu, który podam na końcu tej odpowiedzi).
możesz następnie wypełnić widok przewijania kontrolkami, wizualnie układając go tak, jak chcesz. podaj zarówno symbol zastępczy, jak i właściwości widoku przewijania w kontrolerze widoku, aby uzyskać do nich dostęp w czasie wykonywania.
w czasie wykonywania, w - (void) viewDidLoad
scrollView.contentSize = scrollView.frame.size;
scrollView.frame = placeholder.frame;
[placeholder.superview addSubView:scrollView];
[placeholder removeFromSuperview];
alternatywnie (jeśli nie użyłeś symbolu zastępczego):
CGRect f = self.view.frame;
scrollView.contentSize = f.size;
f.origin.x = 0;
f.origin.y = 0;
scrollView.frame = f;
[self.view addSubView:scrollView];
na koniec, jeśli „zgubisz” widok przewijania w konstruktorze interfejsu (można go zamknąć, aby zniknął z siatki projektu), nie panikuj. po prostu kliknij go na liście obiektów po lewej stronie siatki projektu.