【发布时间】:2012-01-05 00:40:47
【问题描述】:
我有一个可以水平滚动的 UIScrollView。可滚动内容以列显示。
有没有办法让滚动只以步进增量而不是像素移动(即一次移动一列)。
图表:
【问题讨论】:
标签: objective-c ios cocoa-touch uiscrollview ios5
我有一个可以水平滚动的 UIScrollView。可滚动内容以列显示。
有没有办法让滚动只以步进增量而不是像素移动(即一次移动一列)。
图表:
【问题讨论】:
标签: objective-c ios cocoa-touch uiscrollview ios5
是的,有:
yourScrollView.pagingEnabled = YES;
查看UIScrollView 了解更多信息。
如果此属性的值为 YES,则当用户滚动时,滚动视图会在滚动视图边界的倍数处停止。默认值为 NO。
我建议您可能需要将视图结构更改为以下内容:
+--------+
| | <- UIView to hold your structure
+--------+
+--+
| | <- UIScrollView, clipsToBounds = NO, width = column.width
+--+
+--+--+--+
| | | | <- UIView columns
+--+--+--+
将UIScrollView 水平居中并确保包含UIScrollView 的UIView 的宽度是UIScrollView 宽度的倍数
【讨论】:
UIScrollView 设置为不裁剪到边界时,它会显示多列,因此可以在边界之外看到它的内容
UIView的命中消息转发到UIScrollView。
虽然我认为分页可能是正确的答案,但这不是您所要求的,它是生涩的滚动(“始终”列)。我相信您可以提供一个-scrollViewDidScroll: 委托并将 contentOffset 调整到最近的列。
【讨论】:
如果你的目标是 iOS 5.0,你可以使用新的 UIScrollViewDelegate 方法 scrollViewWillEndDragging:withVelocity:targetContentOffset。这允许您设置在用户停止拖动滚动视图后滚动动画将结束的点。
【讨论】: