简体   繁体   中英

iOS 11UICollectionView scroll to top gets stuck with large titles

The title is a mouthful, but here is what is happening. In iOS 11 when you have a navigation bar with large titles then you scroll down a ways and tap the status bar it will scroll to the top. When it scrolls to the top it gets stuck scrolling past the top.

It looks super messed up, here is an example after it scrolled to the top. It scrolled so far it started pulling the refresh control! 滚动太远

Has anyone seen this and been able to fix it? Mail has a large title and doesn't have the problem, though it is likely not a UICollectionView

Here is a gif of it happening: 在此处输入图片说明

As far as code goes it is as simple as I can make it:

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

}

I had the same problem as you!

In my case I managed to solve this problem by making the navigation bar transluent :

在此处输入图片说明

Do not ask me why it works... I have no idea

(I've got the idea there https://stackoverflow.com/a/50639773 )

Please try this solution:

  • in viewDidLoad - set extendedLayoutIncludesOpaqueBars = true
  • in storyboard - pin collectionView top constraint to superview top with constant = 0 (collectionView will be under navigationbar when translucent)

After that if you tap on statusbar, collectionView stops in the right place.

I had similar problem like this. In my case the table view was added to a view controller and the table view's top was assigned to safe area. I changed the table view to super view's top. It was working as expected. This may help in ur case if the collection view is added to the view controller. Thanks.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM