Надлежащее управление страницей, например, прокрутка

В настоящее время у меня есть UIScrollView с размером содержимого, равным примерно 50 страницам, каждая из которых соответствует размеру представления приложения.
Я реализовал прокрутку с помощью подкачки и всегда сохраняю текущую, предыдущую и следующую страницу в памяти, в то время как остальные создаются по мере необходимости, например когда кто-то проводит пальцем вперед, старый «предыдущий» вид освобождается и загружается новый «следующий» вид.

Новые страницы загружаются, а старые освобождаются при вызове 'scrollViewDidEndDeaccelerate'.

Недостатком этого, конечно, является то, что страница должна полностью установиться, прежде чем может начаться новая прокрутка страницы.

Есть ли более эффективный способ сделать это с другим типом управления? UITableView?

Я ищу решения с другими типами элементов управления, а не с реализациями UIScrollView, например. изображения-заполнители и загрузка высокого разрешения по запросу.


person LK.    schedule 06.05.2010    source источник


Ответы (1)


Похоже, вы на правильном пути, поскольку предиктивное кэширование — это единственная идея, которую я могу предложить... которую вы и делаете. Возможно, может помочь проверка доступной памяти и загрузка до определенного процента от нее, с оговоркой, что вы отслеживаете предупреждение о нехватке памяти и сбрасываете элементы, которые находятся дальше всего от текущего местоположения просмотра.

person gnasher    schedule 06.05.2010
comment
Использует ли он дополнительную память, тот факт, что contentSize UIScrollView огромен, хотя на самом деле в него не помещается никакой контент? - person LK.; 07.05.2010
comment
Размер представления содержимого не обязательно означает больший объем памяти. Это значение (не зная реализации Apple) используется для макета и является просто значением. Чтобы убедиться в этом, попробуйте установить смехотворное значение (скажем, 321 473 320 ‹ — это довольно смехотворно!), а затем проверьте потребление памяти вашим любимым методом. - person gnasher; 07.05.2010