ios: добавление и удаление представлений из UIScrollview

Я пытаюсь реализовать просмотр пейджера с использованием горизонтального UIScrollView. Пейджер может содержать много просмотров. Я использую UIScrollview с pagingEnabled в true. Проблема в том, что у меня не может быть всех представлений в памяти одновременно, поскольку может быть около 40-50 различных представлений. Поэтому я решил загрузить текущий вид, и к нему примыкают 3 вида с обеих сторон (справа и слева). Когда я прокручиваю, а затем использую метод scrollViewDidScroll, я удаляю вид слева и вставляю новый вид справа. Для этого я делаю следующее:

  • Сначала проверьте, является ли прокрутка правой или левой, а затем прокручивается вся страница или нет.
  • Затем (для правой прокрутки) я удаляю самый левый вид из superView (т.е. это scrollView).
  • Переместите координату х оставшихся видов влево.
  • Добавьте новое подпредставление справа.
  • Измените размер содержимого представления прокрутки соответственно.

Каким-то образом вышеприведенная реализация не работает должным образом, особенно та, которая связана с изменением координат X. Я думаю, что что-то упустил и пытаюсь решить проблему манипулирования представлениями в scrollView неправильным образом. Это ссылка на демонстрационный проект, который я реализовал на github. Пожалуйста, любая помощь относительно проблем в текущей реализации или любая другая идея относительно того, как реализовать это другим способом, очень приветствуется.

ПРИМЕЧАНИЕ. Этот код содержит еще одну ошибку при перемещении справа от первого представления ко второму, что иногда происходит. Я не мог найти никакого решения для этого либо. Трассировка стека этой проблемы здесь.

1 ответ

Итак, на самом деле подход уменьшения или увеличения размера содержимого scrollView не является правильным (по крайней мере, в моем сценарии). Так как количество просмотров останется неизменным, я установил для contentSize фиксированное количество просмотров * ширину экрана. Теперь каждый раз, когда я просто использую removeFromSuperview() удалить их из scrollView и добавить новый в scrollView в scrollViewDidScroll() метод.

Полный рабочий проект обновлен здесь.

Другие вопросы по тегам