调整 UICollectionView 滚动速度/灵敏度
Posted
技术标签:
【中文标题】调整 UICollectionView 滚动速度/灵敏度【英文标题】:Adjusting UICollectionView scroll speed/sensitivity 【发布时间】:2013-02-19 00:57:02 【问题描述】:我正在尝试减慢 UICollectionView 中的滚动速度。一切都很好,细胞之间的距离也很好,但它移动得太快了。
如何调整滚动的灵敏度或速度?
[编辑]我忘了提到我已经尝试过:
self.collectionView.decelerationRate = UIScrollViewDecelerationRateFast;
和
self.collectionView.decelerationRate = UIScrollViewDecelerationRateNormal;
速度没有明显变化...
【问题讨论】:
这方面有什么更新吗? 【参考方案1】:UICollectionView
是UIScrollView
的子类,因此您可以在集合视图控制器的viewDidLoad
中调整decelerationRate
,如下所示:
目标-C:
- (void)viewDidLoad
[super viewDidLoad];
self.collectionView.decelerationRate = UIScrollViewDecelerationRateFast;
;
斯威夫特:
override func viewDidLoad()
super.viewDidLoad()
self.collectionView.decelerationRate = UIScrollViewDecelerationRateFast
【讨论】:
已经尝试过 UIScrollViewDecelerationRateFast 和 UIScrollViewDecelerationRateNormal 没有明显变化。还有其他我可以使用的属性吗? 我不知道。我刚刚在我自己的一个项目中对其进行了测试,将UICollectionView
的decelerationRate
设置为UIScrollViewDecelerationRateFast
会降低滚动速度显着。您确定您对 collectionView 的引用是正确的吗?如果您在 IB 中创建对象,您是否检查过您的网点设置是否正确?
是的,所有连接都按照它应该的方式连接。您认为布局可能与它有关吗?
我想这是可能的,但我不知道 UICollectionViewLayout 中有任何与减速率混淆的东西。有targetContentOffsetForProposedContentOffset:withScrollingVelocity:
,但这只是返回停止滚动的点。您是否使用自定义(流)布局?如果是的话,你能发布代码吗?
我尝试过使用UIScrollView.decelerationRate
,但它允许的范围是0.990000
到0.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