Я пытаюсь реализовать пейджер представления с использованием горизонтального UIScrollView. Пейджер представления может содержать много просмотров. Я использую UIScrollview с pagingEnabled к true. Проблема в том, что я не могу иметь все представления в памяти одновременно, так как может быть около 40-50 разных просмотров. Поэтому я решил загрузить текущий вид, и он смежен с 3-х сторон с обеих сторон (справа и слева). Когда я прокручиваю, используя метод scrollViewDidScroll, я удаляю представление слева и вставляю новое представление вправо. Для делать это я следующее:ios: Добавление и удаление просмотров из UIScrollview
- Сначала проверьте, является ли прокрутки прокрутки вправо или влево, а затем, если полная страница прокручивается или нет
- Тогда (для прокрутки вправо) я удаляю самый левый вид из SuperView (т. е. scrollView).
- Переместите координату x оставшихся видов влево.
- Добавить новое подземелье справа.
- Соответственно измените размер содержимого прокрутки.
Как-то вышеприведенная реализация не работает должным образом, особенно с изменением координат x. Я думаю, что я что-то упускаю и пытаюсь решить проблему манипулирования представлениями в scrollView неправильно. Это link для демонстрационного проекта, который я реализовал на github. Пожалуйста, любая помощь в отношении проблем в текущей реализации или любая другая идея о том, как реализовать ее по-другому, очень приветствуется.
ПРИМЕЧАНИЕ: У этого кода есть еще одна ошибка, когда прокручивается справа от первого вида до второго вида, которое иногда случается. Я тоже не мог найти решения. Трассировка стека этой проблемы - here.
Зачем вам нужно менять координаты x? Координаты должны оставаться фиксированными. При каждом прокрутке страницы вам нужно только удалить вид с конца и вычислить координаты для противоположного конца и добавить новый вид. – TomSwift
Но это оставило бы пустое место в первой позиции. Таким образом, при перемещении вправо в левом верхнем положении будет пустое пространство цвета прокрутки. – meteors
Не удаляйте его до тех пор, пока прокрутка не остановится. Эта позиция отключена. Кроме того, вы сказали, что у вас есть буфер из трех видов с обеих сторон, которые также находятся вне экрана. – TomSwift