作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图让 UICollectionView 快速回到靠近它的任何项目单元格的中心,但问题是,当我稍微移动它时,它会以太快的速度弹回单元格的中心,而单元格的中心看起来并不光滑,是否可以忽略或禁用滚动,除非用户滑动到下一个项目并且不让 ScrollView 将其捕捉到同一项目?
这是我的捕捉代码
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
let layout = self.collectionView.collectionViewLayout as! UICollectionViewFlowLayout
let cellWidthIncludingSpacing = layout.itemSize.width + layout.minimumLineSpacing
var offset = targetContentOffset.pointee
let index = (offset.x + scrollView.contentInset.left ) / cellWidthIncludingSpacing
let roundedIndex = round(index)
self.lastContentOffset = scrollView.contentOffset.x
offset = CGPoint(x: roundedIndex * cellWidthIncludingSpacing - scrollView.contentInset.left, y: -scrollView.contentInset.top)
targetContentOffset.pointee = offset
}
编辑:这就是它从物理设备恢复的方式。这里速度较慢,因为它是 gif
最佳答案
它会弹回来,因为您直接设置了 contentOffset。相反,您应该调用 UIScrollViewMethod setContentOffset(_:animated:)动画是真实的。如果您仍然不喜欢结果,请考虑实现 UICollectionLayout 方法 targetContentOffsetForProposedContentOffset:withScrollingVelocity:然后布局将自动捕捉到您返回的点。
关于ios - Swift - 如果项目滚动一点,UICollection 回弹得太快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55146146/
我正在尝试使用 CAAnimation,并且像许多新来者一样使用 CAAnimation;完成后,图层将恢复到其原始状态。 关于如何解决这个问题已经在这里问过几次了,答案是将以下代码添加到您的 CAA
我是一名优秀的程序员,十分优秀!