iOS 11UICollectionView滚动到顶部卡住大型标题

时间:2018-05-21 14:54:10

标签: ios uicollectionview uikit ios11

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

它看起来非常混乱,这是滚动到顶部后的一个例子。它滚动到目前为止它开始拉动刷新控制! scrolled too far

有没有人见过这个并且能够修复它? Mail有一个很大的标题,并没有问题,虽然它可能不是UICollectionView

以下是它发生的GIF: enter image description here

就代码而言,它就像我能做到的那样简单:

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!
    }

}

3 个答案:

答案 0 :(得分:-1)

我和你有同样的问题!

就我而言,我设法通过使导航栏为半透明来解决此问题:

enter image description here

不要问我为什么它起作用...我不知道

(我的想法是https://stackoverflow.com/a/50639773

答案 1 :(得分:-1)

请尝试以下解决方案:

  • 在viewDidLoad中-设置extendedLayoutIncludesOpaqueBars = true
  • 在情节提要板中-将collectionView顶部约束固定为常量= 0的超级视图顶部(半透明时collectionView将位于导航栏下方)

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

答案 2 :(得分:-1)

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