4

我试图创建自定义垂直UIScrollView,它可以处理具有不同页面高度的多个页面。如何创建具有不同页面大小的UIScrollView(页面对齐,反弹)

假设:

  • 页面高度大于屏幕高度
  • 如果页面比屏幕高度高,它滚动照例的UIScrollView等于或大于 - 与弹跳顶部和底部
  • 如果用户最终滚动并且“分页符”在屏幕中间
    • 如果没有速度 - 页面捕捉到最近
    • 如果有速度 - 页面更改一个在刷卡

我已经尝试了许多方法来实现这一目标的方向,但我已经在很多的UIScrollView怪癖,这使得它很难绊倒了。

问题:

  • UIPanGestureRecognizer有获得速度(velocityInView :)不可靠的方法
  • scrollViewWillEndDragging:withVelocity:targetContentOffset:方法让我头疼,因为它可以随意摧毁我尝试动画设置内容偏移量
  • 我不知道如何在中间页面实现反弹,恐怕我不得不重写整个滚动处理
  • 当我尝试重写设置时UIScrollView的减速内容偏移,我所得到的是
    • 我的内容设置
    • 减速抵消不断超越内容偏移我设置

奖金

我也试过把UIScrollView作为一个页面放在UIScrollView里面,但是这种方法也是脖子上的疼痛。例如,当我处于内部滚动的底部时,然后我向下滚动了一下,将手指放开,然后迅速再次抓住并向上滚动,外侧滚动接触到触摸,滚动显示内部。

有人知道如何做到这一点吗?任何提示将有所帮助,因为我完全卡住了...

回答