Как создать UIScrollView с разными размерами страниц (привязка страницы, отскок)

Я пытаюсь создать собственный вертикальный UIScrollView, который мог бы обрабатывать несколько страниц с разной высотой.

Предположения:

  • высота страницы равна или больше высоты экрана
  • если страница выше высоты экрана, она прокручивается как обычно UIScrollView - с подпрыгиванием сверху и снизу
  • if user ends up scrolling and "page break" is in the middle of screen
    • if there is no velocity - page snaps to closest
    • если есть скорость - страница меняется на единицу в направлении свайпа

Я пробовал много подходов для достижения этой цели, но наткнулся на многие причуды UIScrollView, которые усложняют задачу.

Проблемы:

  • UIPanGestureRecognizer имеет ненадежный метод получения скорости (velocityInView :)
  • scrollViewWillEndDragging: withVelocity: targetContentOffset: метод вызывает у меня головную боль, потому что он произвольно может разрушить мои попытки анимировать настройку смещения содержимого
  • Я не знаю, как добиться отскока на одной из средних страниц, боюсь, мне придется переписать всю обработку прокрутки
  • when I try to override setting content offset when UIScrollView is decelerating, what I get is
    • my content offset is set
    • замедление продолжается после установленного мной смещения содержимого

Бонус

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

Кто-нибудь знает, как это сделать? Любые советы будут полезны, так как я полностью застрял ...


person patrykens    schedule 04.05.2013    source источник


Ответы (1)


Попробуй это. Может помочь. На основе новостного приложения Circa.

https://www.cocoacontrols.com/controls/rscircapagecontrol

person Kyle Ryan    schedule 14.10.2013
comment
Пожалуйста, добавьте контекст ссылки в свой ответ, чтобы она была более полезной для других, и они получили представление о том, что это такое. - person digital_revenant; 14.10.2013