我使用的是一个UIScrollView,它有几个需要显示的项。当第一次加载时,我的第一个项目以UIScrollView中间为中心。我试图让下一项,第二项,部分显示,允许用户知道有更多的项目需要看到,从而导致他们滚动的项目。
我要做的是配置它,这样用户就可以在UIScrollView允许的情况下自由地滑动和滚动,但是每次用户滑动时,我都希望UISCrollView自动停止在最接近视图中心的任何项目上。
我已经启用了分页,并了解了分页的工作原理。我想要做的是使它能够改变--分页所创建的“固定页面点”的数量。在启用分页的情况下,它似乎将视图的总宽度除以2,从而创建了3个停止点:一个位于视图左侧的视图末尾,一个位于视图的直接中心(视图宽度/2 ),另一个位于视图的最右端。
如果有人知道如何更改停止点的数量,或页面点(CGPoints),无论它们被称为什么,我都会非常感激。下面是我正在努力实现的目标的图片。

发布于 2015-07-27 17:58:54
不幸的是,UIScrollView分页没有按照您希望的方式工作。
分页尽可能多地创建UIScrollView在内容大小范围内的界限。例如,如果滚动视图的帧大小为200x200,而内容为400x200,它将创建两个水平页面。如果是600x200,它将创建三个水平页面,以此类推。
这意味着,您将无法以这样一种方式页面,您可以看到其他的元素。
为了做到这一点,我建议重写这个方法:
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset下面是一个与完全分页相同的效果的示例。我会使用元素大小的targetOffset线来使其全部正常工作。
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
float expectedOffset = targetContentOffset->x;
if (expectedOffset == 0 || expectedOffset == scrollView.contentSize.width)
return;
CGFloat targetOffset = roundf(expectedOffset / scrollView.frame.size.width) * scrollView.frame.size.width;
targetContentOffset->x = targetOffset;
}https://stackoverflow.com/questions/31659743
复制相似问题