【发布时间】:2017-02-15 23:06:01
【问题描述】:
我正在玩我在 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 的每个和两个地方的 screenheight 中添加 4(这是充当边框的“空间”的大小),但它从来没有完全起作用。如果我像这样添加 4:
targetContentOffset.memory.y = index * self.screenHeight + 4
它几乎可以工作。它就像将一半的边框空间从屏幕上移开,并且对每个单元格始终如一地工作,但由于某种原因总是在屏幕上保留几个像素的边框。 screenheight 基本上就是 UIScreen.mainScreen().bounds.size.height。
当我按照我的方式添加 4 时,它总是比应有的高 4 个像素停止,但它始终如一,所以我需要在某处或某处添加另一个 4。
【问题讨论】:
标签: ios swift xcode uitableview uiscrollview