以步进增量滚动水平UIScrollView?

时间:2011-11-23 18:05:45

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

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

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

图: enter image description here

3 个答案:

答案 0 :(得分:7)

是的,有:

yourScrollView.pagingEnabled = YES;

查看UIScrollView以获取更多信息。

  

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

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

+--------+
|        | <- UIView to hold your structure
+--------+

   +--+
   |  |    <- UIScrollView, clipsToBounds = NO, width = column.width
   +--+

+--+--+--+
|  |  |  |  <- UIView columns
+--+--+--+

水平居中UIScrollView,确保包含UIView的{​​{1}}的宽度是UIScrollView

宽度的倍数

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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