如何使用不同的页面大小创建UIScrollView(页面捕捉,弹跳)

时间:2013-05-04 22:57:26

标签: ios cocoa-touch uiscrollview custom-controls uiscrollviewdelegate

我正在尝试创建自定义垂直UIScrollView,它可以处理具有不同页面高度的多个页面。

假设:

  • 页面高度等于或大于屏幕高度
  • 如果页面高于屏幕高度,它会像往常一样滚动UIScrollView - 在顶部和底部弹跳
  • 如果用户最终滚动并且“分页符”在屏幕中间
    • 如果没有速度 - 页面捕捉到最近的
    • 如果有速度 - 在滑动方向上页面更改为

我已经尝试了很多方法来实现这一目标,但我偶然发现了许多UIScrollView怪癖,这让人很难。

问题:

  • UIPanGestureRecognizer获取速度的方法不可靠(velocityInView :)
  • scrollViewWillEndDragging:withVelocity:targetContentOffset:方法让我很头疼,因为它任意破坏我设置动画设置内容偏移的尝试
  • 我不知道如何在其中一个页面中实现反弹,我担心我必须重写整个滚动处理
  • 当我尝试在UIScrollView减速时覆盖设置内容偏移时,我得到的是
    • 我的内容偏移已设置
    • 减速继续超出内容偏移量我设置

加成

我也尝试将UIScrollView放在UIScrollView中作为一个页面,但这种方法也很痛苦。例如,当我在内部滚动的底部时,然后我向下滚动了一下,将我的手指放开并再次快速抓住并向上滚动,外部滚动接收到触摸,这在滚动显示内部混乱。

有人知道怎么做吗?任何提示都会有所帮助,因为我完全陷入困境......

1 个答案:

答案 0 :(得分:1)

试试这个。可能有帮助。基于Circa新闻应用程序。

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