我正在玩这个我在 Github 上找到的应用程序,它有这段代码可以让滚动停止在一个单元格上。单元格是全屏大小,因此它会停在一个单元格上,并且该单元格会占据整个屏幕。我在单元格之间添加了一个边框,它看起来有点不对劲,因为单元格非常接近全屏,但又不完全是。然后我想到了在单元格后面添加背景,并使单元格略高于屏幕,但单元格内容仍然是全屏的好主意。这样用户只能在滚动时看到边框,然后当它执行自动滚动停止功能时,实际上是一个空格的“边框”不在屏幕上。这是完美的解决方案,但我很难做到。这是自动居中的神奇功能,但如果我使单元格大于屏幕高度,它就会变得疯狂。
func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
let cellHeight = targetContentOffset.memory.y / self.screenHeight
let index = round(cellHeight)
targetContentOffset.memory.y = index * self.screenHeight
}
我尝试在这段代码中使用 screenHeight 的每个地方和两个地方将 4(这是充当边框的“空间”的大小)添加到 screenheight,但它从来没有完全起作用。如果我像这样添加 4:
targetContentOffset.memory.y = index * self.screenHeight + 4
它几乎可以工作。它就像把一半的边界空间东西从屏幕上移开,并且对每个单元格都一致地工作,但由于某种原因总是在屏幕上保留几个像素的边界。 screenheight 基本上就是 UIScreen.mainScreen().bounds.size.height。
当我按照我的方式添加 4 时,它总是停止在比应有的高 4 个像素处,但它始终如一地停止,所以我需要在某处或其他地方添加另外 4 个像素。
最佳答案
好的,我让它工作了。我所做的是只在单元格底部添加 +4,而不是在顶部添加 2,在底部添加 2。然后我给 self.screenHeight 加 4 的方法果然奏效了。我认为这样做的原因是因为它在每个单元格的末尾添加了间距,因此单元格仍然显示和居中完全相同,然后当您从一个单元格滚动到下一个单元格时,您只需滚动额外的 4 个像素并看到间距,但它们仍然停在同一个地方。
关于ios - 如何停止以大于屏幕高度的单元格为中心的滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39908932/