2

在使用 UICollectionView 在不同页面之间滚动时,我正在尝试实现与移动 Safari 相同的功能。一页在中间,其他部分也可见。

在此处输入图像描述

我正在努力使用 UICollectionView 实现这种行为。有一种方法我找到了如何在一个屏幕上放置 3 个页面 - 使页面更小并设置适当的插图。但是,一旦我将页面设置为更小并启用了分页,页面就不会按应有的方式滚动到中心。我也可以禁用分页并在 UICollectionViewFlowLayout 的子类中使用此方法:

- (CGRect)rectForTargetPageForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity

在这种方法中,我可以准确设置 UICollectionView 将停止的位置。但是,滚动体验不如使用启用分页的 UIScrollview 好。当我以更大的速度滑动时,滚动了几页并停在建议的页面上。我想要实现的是与启用分页的正常滚动视图相同的行为——无论我使用什么速度,我只会多得到 1 页。

有谁知道如何使用 UICollectionView 解决这个问题?

4

1 回答 1

0

所以你想让页面的大小小于滚动视图的大小,对吧?页面大小始终与滚动视图的大小相同,因此您必须使滚动视图更小

然后还有另一个问题。如何接收超出滚动视图范围的触摸?

覆盖-[UIView pointInside:withEvent:]滚动视图以检查比实际更大的范围。然后触摸应该起作用。


事实上,我自己并没有尝试过,我是通过在上面放置带有所需 bounds 和 override 的补充视图来做到这一点的-[UIView hitTest:withEvent:]。在里面我修改了点并称为滚动视图命中测试。这样触摸是由滚动视图处理的,但它们的位置是错误的。您可能想尝试结合这两种方法来获得正确的位置。

于 2013-01-25T19:21:35.850 回答