Ho un UIScrollView impostato nel metodo viewDidLoad
di un UIViewController
(lo chiamerò uno ScrollViewController
). La vista di scorrimento contiene pagine di contenuto orizzontale (simile all'app meteo nativa).Come scorrere un UIScrollView in caricamento quando si usa il layout automatico
Durante la visualizzazione dello scrollview, dovrebbe essere possibile scegliere in quale pagina iniziare. Il mio schema è questo:
- init a
ScrollViewController
. Niente succede molto qui. Una proprietàcurrentPage
è impostata su 0. - impostare il numero di pagina desiderato su
scrollViewController.currentPage
. - in
viewDidLoad
diScrollViewController
, leggereself.currentPage
e utilizzarescrollToRect
osetContentOffset
per scorrere di conseguenza.
L'implementazione di scorrimento sembra soddisfacente, poiché sto utilizzando lo stesso codice altrove per passare a determinate pagine. Ma al primo caricamento, non accade nulla (cioè, la vista di scorrimento non scorre nella pagina desiderata).
Io penso ho trovato la ragione - sembra che il contentSize
della vista di scorrimento (che deriva dal layout automatico ricordo) è 0 durante viewDidLoad
, e questo sembra che questo impedisce lo scorrimento. È anche zero durante viewWillAppear. Solo nello viewDidAppear
funziona lo scorrimento, il che rende ovviamente un'esperienza utente strana.
Come posso risolvere questo? È saggio forzare in qualche modo un layout in viewDidLoad
? O qualche altro approccio?