2011-02-23 65 views
17

我想要启用水平滚动的UIScrollView。此滚动视图中的页面具有不同的宽度,因此滚动距离因页面而异。使用不同的页面宽度分页UIScrollView

的目标是使不同的点选择器的时间,例如:

| Now | Yesterday evening | Last Week | Last Month | 
    ^   ^   ^   ^   <- stopps here 

这里| Now || Yesterday evening |小的宽度。当通过这个值翻页时,滚动视图应该停在相应值的中心。

这可能吗?

+0

看到我对这个问题的回答:http://stackoverflow.com/a/10993426/60488 – 2012-06-12 09:03:33

回答

12

这是肯定可以的,但这样会自动不...

我猜你应该实现UIScrollViewDelegate协议方法:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ 

} 

它被称为当用户停止移动手指上的方法你的内容的滚动视图, 可以在里面检查它的坐标:

yourScrollView.contentOffset 

,然后检查你爸哪一个ge.x(创建它们时将它们注册到一个数组中,或者检查添加到scrollView中的所有视图的原点)离它更近,然后转到您的页面offSet(带动画)调用:

- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated 
+0

谢谢meronix,那就是我一直在寻找的! 一些额外提示: - 'UIScrollView.pagingEnabled'必须设置为'NO' - 我也不得不实施UIScrollViewDelegate协议方法: ' - (无效)scrollViewDidEndDecelerating:(UIScrollView的*)scrollView' – liefersfl 2011-02-24 20:04:05

+3

为一个更好的结果我结束了实现' - scrollViewWillBeginDecelerating:(UIScrollView *)scrollView'方法 – darune 2011-11-30 15:45:25