UICollectionView.scrollToItem 设置动画速度

Posted

技术标签:

【中文标题】UICollectionView.scrollToItem 设置动画速度【英文标题】:UICollectionView.scrollToItem set animation speed 【发布时间】:2018-07-24 16:08:56 【问题描述】:

collectionView.scrollToItemIndexPath 一起使用时。是否可以设置自定义滚动速度?

【问题讨论】:

【参考方案1】:

是的,这是可能的。试试这个:

UIView.animate(withDuration: 5, animations:  [weak self] in
    self?.collectionView.scrollToItem(at: IndexPath(item: 10, section: 10), at: .middle, animated: false)
)

【讨论】:

这样做时我得到了一个奇怪的效果。如果动画太快,则部分或行尚未加载,因此会出现一瞬间的空白。 只是提醒其他人。不要忘记在 scrollToItem(at:) 调用中将动画值设置为 false。否则就不行了【参考方案2】:

在 collectionView 上使用 .layoutIfNeeded() 来防止白色闪烁。

 UIView.animate(withDuration: 5, animations:  [weak self] in
        self?.collectionView.scrollToItem(at: IndexPath(item: 10, section: 10), at: .middle, animated: false)
        self?.collectionView.layoutIfNeeded()
 )

【讨论】:

虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。 为什么需要layoutIfNeeded()

以上是关于UICollectionView.scrollToItem 设置动画速度的主要内容,如果未能解决你的问题,请参考以下文章