【问题标题】:How to stop scroll centered on a cell which is larger than screen height如何停止以大于屏幕高度的单元格为中心的滚动
【发布时间】: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


    【解决方案1】:

    好的,我让它工作了。我所做的是我只在单元格的底部添加了 +4,而不是在顶部添加了 2,在底部添加了 2。然后我将 4 添加到 self.screenHeight 的方法实际上奏效了。我认为这样做的原因是因为它在每个单元格的末尾添加了间距,因此单元格仍然显示和居中完全相同,然后当您从一个单元格滚动到下一个单元格时,您只需滚动额外的 4 个像素并查看间距,但它们仍然停在同一个地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多