【问题标题】:Scrolling a horizontal UIScrollView in stepped increments?以步进增量滚动水平 UIScrollView?
【发布时间】:2012-01-05 00:40:47
【问题描述】:

我有一个可以水平滚动的 UIScrollView。可滚动内容以列显示。

有没有办法让滚动只以步进增量而不是像素移动(即一次移动一列)。

图表:

【问题讨论】:

    标签: objective-c ios cocoa-touch uiscrollview ios5


    【解决方案1】:

    是的,有:

    yourScrollView.pagingEnabled = YES;
    

    查看UIScrollView 了解更多信息。

    如果此属性的值为 YES,则当用户滚动时,滚动视图会在滚动视图边界的倍数处停止。默认值为 NO。

    我建议您可能需要将视图结构更改为以下内容:

    +--------+
    |        | <- UIView to hold your structure
    +--------+
    
       +--+
       |  |    <- UIScrollView, clipsToBounds = NO, width = column.width
       +--+
    
    +--+--+--+
    |  |  |  |  <- UIView columns
    +--+--+--+
    

    UIScrollView 水平居中并确保包含UIScrollViewUIView 的宽度是UIScrollView 宽度的倍数

    【讨论】:

    • 我还相信 iOS SDK 5 增加了对滚动视图中“建议”位置的支持?
    • 我在文档中看不到这一点:S 你有我可以参考的参考吗?
    • 如果我没记错的话,我不会一次只显示一列,我想像我的例子一样显示多列。另外为了清楚起见,只要它总是停在一整列上,我就不会担心它像往常一样滚动。
    • 当您将UIScrollView 设置为不裁剪到边界时,它会显示多列,因此可以在边界之外看到它的内容
    • 将来自UIView的命中消息转发到UIScrollView
    【解决方案2】:

    虽然我认为分页可能是正确的答案,但这不是您所要求的,它是生涩的滚动(“始终”列)。我相信您可以提供一个-scrollViewDidScroll: 委托并将 contentOffset 调整到最近的列。

    【讨论】:

      【解决方案3】:

      如果你的目标是 iOS 5.0,你可以使用新的 UIScrollViewDelegate 方法 scrollViewWillEndDragging:withVelocity:targetContentOffset。这允许您设置在用户停止拖动滚动视图后滚动动画将结束的点。

      【讨论】:

      • 听起来不错,不幸的是我需要它才能在 iOS4 及更高版本中工作。
      猜你喜欢
      • 2012-03-15
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-19
      相关资源
      最近更新 更多