【问题标题】:iOS 11UICollectionView scroll to top gets stuck with large titlesiOS 11UICollectionView 滚动到顶部卡住了大标题
【发布时间】:2018-05-21 14:54:09
【问题描述】:

标题很拗口,但这就是正在发生的事情。在 iOS 11 中,当您有一个带有大标题的导航栏时,您向下滚动一条路径并点击状态栏,它将滚动到顶部。当它滚动到顶部时,它会卡住滚动过去顶部。

它看起来超级混乱,这是滚动到顶部后的示例。它滚动到现在开始拉刷新控制!

有没有人看到这个并能够修复它?邮件标题很大,没有问题,虽然它可能不是UICollectionView

这是它发生的 gif:

就代码而言,它尽可能简单:

extension ViewController: UICollectionViewDataSource {
    public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 100
    }

    public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "fakeCell", for: indexPath) as? UICollectionViewCell
        cell?.backgroundColor = [UIColor.black, .blue, .red, .green, .yellow][indexPath.row % 5]
        return cell!
    }

}

【问题讨论】:

  • 我认为上面是普通代码,但可能仍然值得展示。
  • 尝试从 scrollViewShouldScrollToTop: 返回 false 并在其中放入您自己的滚动到顶部代码。

标签: ios uicollectionview uikit ios11


【解决方案1】:

请试试这个解决方案:

  • 在 viewDidLoad 中 - 设置 extendedLayoutIncludesOpaqueBars = true
  • 在情节提要中 - 将 collectionView 顶部约束固定到 superview 顶部,常量 = 0(半透明时,collectionView 将位于导航栏下方)

之后,如果您点击状态栏,collectionView 会停在正确的位置。

【讨论】:

    【解决方案2】:

    我和你有同样的问题!

    就我而言,我设法通过使导航栏透明解决了这个问题:

    不要问我为什么会这样......我不知道

    (我有这个想法https://stackoverflow.com/a/50639773

    【讨论】:

      【解决方案3】:

      我有类似的问题。在我的情况下,表格视图被添加到视图控制器中,并且表格视图的顶部被分配到安全区域。我将表格视图更改为超级视图的顶部。它按预期工作。如果将集合视图添加到视图控制器,这可能对您有所帮助。 谢谢。

      【讨论】:

        猜你喜欢
        • 2020-06-23
        • 2021-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-10
        • 1970-01-01
        • 2019-01-18
        • 1970-01-01
        相关资源
        最近更新 更多