调整 UICollectionView 滚动速度/灵敏度

Posted

技术标签:

【中文标题】调整 UICollectionView 滚动速度/灵敏度【英文标题】:Adjusting UICollectionView scroll speed/sensitivity 【发布时间】:2013-02-19 00:57:02 【问题描述】:

我正在尝试减慢 UICollectionView 中的滚动速度。一切都很好,细胞之间的距离也很好,但它移动得太快了。

如何调整滚动的灵敏度或速度?

[编辑]我忘了提到我已经尝试过:

self.collectionView.decelerationRate = UIScrollViewDecelerationRateFast;

self.collectionView.decelerationRate = UIScrollViewDecelerationRateNormal;

速度没有明显变化...

【问题讨论】:

这方面有什么更新吗? 【参考方案1】:

UICollectionViewUIScrollView 的子类,因此您可以在集合视图控制器的viewDidLoad 中调整decelerationRate,如下所示:

目标-C:

- (void)viewDidLoad

    [super viewDidLoad];

    self.collectionView.decelerationRate = UIScrollViewDecelerationRateFast;
;

斯威夫特:

override func viewDidLoad() 
    super.viewDidLoad()

    self.collectionView.decelerationRate = UIScrollViewDecelerationRateFast

【讨论】:

已经尝试过 UIScrollViewDecelerationRateFast 和 UIScrollViewDecelerationRateNormal 没有明显变化。还有其他我可以使用的属性吗? 我不知道。我刚刚在我自己的一个项目中对其进行了测试,将UICollectionViewdecelerationRate 设置为UIScrollViewDecelerationRateFast 会降低滚动速度显着。您确定您对 collectionView 的引用是正确的吗?如果您在 IB 中创建对象,您是否检查过您的网点设置是否正确? 是的,所有连接都按照它应该的方式连接。您认为布局可能与它有关吗? 我想这是可能的,但我不知道 UICollectionViewLayout 中有任何与减速率混淆的东西。有targetContentOffsetForProposedContentOffset:withScrollingVelocity:,但这只是返回停止滚动的点。您是否使用自定义(流)布局?如果是的话,你能发布代码吗? 我尝试过使用UIScrollView.decelerationRate,但它允许的范围是0.9900000.998000,调整幅度不大。【参考方案2】:

对于任何想在 Swift 中进行操作的人

 self.collectionView.decelerationRate = UIScrollViewDecelerationRateFast

斯威夫特 5:

 self.collectionView.decelerationRate = UIScrollView.DecelerationRate.fast

【讨论】:

使用 Swift 应该有更简洁的方式来表达这一点。【参考方案3】:

对于那些不使用UICollectionViewController 的人,我一直在寻找一种方法来完成这项工作。事实证明,如果您将 UICollectionView 本身子类化,并在所需的 init(coder aDecoder:) 方法中设置 self.decelerationRate = UIScrollViewDecelerationRateFast,那么您就可以开始了。

推测这是因为 UICollectionView 不喜欢在布局创建后调整减速率。我不能确定,我在这方面浪费了足够多的时间。只是想我会发布答案。

SDK: ios 9+ Xcode: 8.3.2 斯威夫特: 3.1

【讨论】:

以上是关于调整 UICollectionView 滚动速度/灵敏度的主要内容,如果未能解决你的问题,请参考以下文章

如何使 UICollectionView 的高度可自动调整和滚动?

在 UICollectionView 中重新加载数据后保持 collectionview 速度

调整包含 UICollectionView 的 UITableViewCell

UICollectionView 在 UIScrollView 内调整大小

视图转换后调整 UICollectionView 的大小

UICollectionView.scrollToItem 设置动画速度