UIScrollView - установка правильного contentOffset для нового содержимого - PullRequest
2 голосов
/ 04 октября 2011

Я некоторое время жонглировал с UIScrollView.Я пытаюсь вставить подпредставления в scrollView, основываясь на различных факторах.Поскольку у меня есть прокрутка для прокрутки только по вертикали, я бы вставил подпредставление до или после текущего видимого представления.

Итак, допустим, что кадры моего текущего видимого представления (0,0,320,480), contentSize scrollViewравен (320,480), а текущий contentOffset равен (0,0)

. Когда я хочу вставить подпредставление над currentView и в то же время держать текущий вид в фокусе, я вставляю новое подпредставление в позиции (0, -480,320,480)и измените contentSize scrollView на (320, 960), оставив contentOffset равным (0,0).

Удивительно, что UIScrollView добавляет «дополнительный» пробел после currentView вместо его вставкивыше currentView.В то время как недавно вставленное выше представление никогда не может быть сфокусировано, потому что UIScrollView предполагает, что contentSize от неправильного contentOffset, возможно!пока не дал результатов: Установить начальную точку размера контента для UIScrollView

Пожалуйста, дайте мне знать, если я что-то не так делаю?Или это какое-то ограничение и т. Д.

Спасибо!

Редактировать: Некоторые threads предполагают, что изменение contentSize повлияет на свойство contentOffset, поэтомуЧтобы убедиться, что это не вызывает проблем, я обновляю свойство contentOffset только после изменения contentSize.Даже тогда я сталкиваюсь с такими же проблемами.

Ответы [ 2 ]

2 голосов
/ 04 октября 2011

Вы можете решить это следующим образом:

  • добавив новое подпредставление с фреймом (0,0,320,480)
  • установив фрейм существующего подпредставления в (0,480,320,480)
  • установка contentSize на (320,960)
  • установка смещения контента на (0,480) - без анимации, конечно.

Таким образом, по сути, смещение всего на 480 пунктов

1 голос
/ 04 октября 2011

Источник всегда (0,0). Если вы хотите вставить что-то выше текущего смещения, вам нужно переместить текущие представления вниз на 480 points, добавить новое представление на (0,0) и установить для contentOffset значение (0,480) (а для contentSize - (320,960)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...