Using a navigation controller in a tab bar controller the large title glitches when switching tabs.
SceneDelegate.swift
if let windowScene = scene as? UIWindowScene { let window = UIWindow(windowScene: windowScene) let tabBarController = UITabBarController() tabBarController.viewControllers = [UINavigationController(rootViewController: ViewController()), UIViewController()] window.rootViewController = tabBarController self.window = window window.makeKeyAndVisible() }
ViewController.swift
self.view.backgroundColor = .systemBackground self.title = "Main" self.navigationController?.navigationBar.prefersLargeTitles = true self.navigationItem.largeTitleDisplayMode = .always scrollView = UIScrollView(frame: self.view.bounds) self.view.addSubview(scrollView) let contentView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 1400)) contentView.backgroundColor = .gray self.scrollView.addSubview(contentView) scrollView.contentSize.height = 1700
Steps to reproduce:
- Scroll down until the large title collapses into the small title
- Switch to the second tab
- Switch back to the first tab
- Result: The scroll view is still scrolled down but the large title now overlaps the content. When scrolling a little bit, it snaps back to the small title.
This does not happen when it’s a table or collection view instead of the scroll view.
This started happening in iOS 13. Did I miss some change in the behavior or is this a bug? Does someone know a workaround?