【问题标题】:How to create UIScrollView with different page sizes (page snapping, bounce)如何创建具有不同页面大小的 UIScrollView(页面捕捉、反弹)
【发布时间】:2013-04-29 02:01:54
【问题描述】:

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

假设:

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

我尝试了很多方法来实现这一点,但我偶然发现了许多 UIScrollView 怪癖,这让我很难做到。

问题:

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

奖金

我也尝试过将 UIScrollView 作为页面放入 UIScrollView 中,但这种方法也很让人头疼。例如,当我在内部滚动的底部时,然后我向下滚动一点,然后将手指放开并快速再次抓住并向上滚动,外部滚动收到触摸,这使内部滚动呈现混乱。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 请在您的答案中添加有关链接的一些上下文,以便它对其他人更有用,并且他们了解它是什么。
    猜你喜欢
    • 1970-01-01
    • 2011-03-23
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多