Mam UIScrollView, który jest skonfigurowany w metodzie viewDidLoad
z UIViewController
(będę to nazywać ScrollViewController
). Widok przewijania zawiera strony o treści poziomej (podobne do natywnej aplikacji pogodowej).Jak przewinąć UIScrollView pod obciążeniem podczas korzystania z automatycznego układu
Podczas wyświetlania przewijania powinna istnieć możliwość wybrania strony, na której się zaczyna. Mój wzór jest następujący:
- init a
ScrollViewController
. Tutaj nic się nie dzieje. WłaściwośćcurrentPage
jest domyślnie ustawiona na 0. - ustaw
scrollViewController.currentPage
na żądany numer strony. - w
viewDidLoad
zScrollViewController
, przeczytajself.currentPage
i użyjscrollToRect
lubsetContentOffset
, aby przewinąć odpowiednio.
Implementacja przewijania wydaje się być w porządku, ponieważ używam tego samego kodu w innym miejscu, aby przejść do niektórych stron. Ale przy pierwszym załadowaniu nic się nie dzieje (to znaczy widok przewijania nie jest przewijany do żądanej strony).
myślę Znalazłem przyczynę - wydaje się, że contentSize
zdania przewijania (który jest osiągany przez autoLayout pamiętam) jest 0 podczas viewDidLoad
, a to wydaje się, że to zapobiega przewijanie. Jest również zero podczas viewWillAppear. Tylko w trybie viewDidAppear
przewijanie działa, co oczywiście powoduje dziwne wrażenia użytkownika.
Jak mogę rozwiązać ten problem? Czy mądrze jest jakoś wymusić układ w viewDidLoad
? Lub inne podejście?