iPadOS 26 - Status bar overlaps with navigation bar

Hello,

I'm experiencing a navigation bar positioning issue with my UIKit iPad app on iPadOS 26 (23A340) using Xcode 26 (17A321).

The navigation bar positions under the status bar initially, and after orientation changes to landscape, it positions incorrectly below its expected location. This occurs on both real device (iPad mini A17 Pro) and simulator. My app uses UIKit + Storyboard with a Root Navigation Controller.

A stack overflow post has reproduce the bug event if it's not in the same configuration: https://stackoverflow.com/questions/79752945/xcode-26-beta-6-ipados-26-statusbar-overlaps-with-navigationbar-after-presen

I have checked all safe areas and tried changing some constraints, but nothing works.

Have you encountered this bug before, or do you need additional information to investigate this issue?

Answered by irhym in 858539022

I'm able to reproduce the issue on iPhone SE using your sample code. Just download the sample code and check "Hide status bar during application launch". The navigation bar is directly broken on devices without notch.

  • Xcode 26 via iOS 26 (doesn't happen on other combinations)
  • Devices without a notch or Dynamic Island
  • Happens initially and fixed after sending app to background and bringing to foreground again.

Are you able to reproduce the issue using this sample code: Customizing your app’s navigation bar on iPadOS 26 (23A341)?

If you are not able to reproduce the issue, please apply the learnings from the sample code to your project.

If you're able to reproduce the issue using that sample, please share a test project that reproduces the issue and I'd be happy to look into the issue.

Accepted Answer

I'm able to reproduce the issue on iPhone SE using your sample code. Just download the sample code and check "Hide status bar during application launch". The navigation bar is directly broken on devices without notch.

  • Xcode 26 via iOS 26 (doesn't happen on other combinations)
  • Devices without a notch or Dynamic Island
  • Happens initially and fixed after sending app to background and bringing to foreground again.

Thanks @irhym that was the issue. In my case, the value wasn't checked but it was in my plist file.

@DTS Engineer I also reproduced the issue with the sample code by following their steps.

I also encountered this issue, and as suggested by @irhym, I resolved it by disabling the “Hide during application launch” option in the status bar preferences.

In any case, I believe the problem is caused by a miscalculation by Auto Layout on devices without a notch. On iPad, the issue disappears by resizing the window, and even if I then return the app to full screen, the navigation bar is displayed correctly; if I restart the app, the problem occurs again.

I also encountered this issue, and as suggested by @irhym, I resolved it by disabling the “Hide during application launch” option in the status bar preferences.

In any case, I believe the problem is caused by a miscalculation by Auto Layout on devices without a notch. On iPad, the issue disappears by resizing the window, and even if I then return the app to full screen, the navigation bar is displayed correctly; if I restart the app, the problem occurs again.

I think I'm experiencing a version of this issue as well. The difference is that “Hide during application launch” is not checked, and the issue appears after hiding the status bar when rotating to landscape and then unhiding it again when rotating back to portrait. Here's a minimal reproduction (since you can't upload zip files):

class ViewController: UIViewController {
    var statusBarHidden = false

    override var prefersStatusBarHidden: Bool {
        return statusBarHidden
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        title = "This navigation bar will overflow after rotating to landscape and back"
        navigationController?.navigationBar.isTranslucent = true
        navigationController?.navigationBar.backgroundColor = .systemBlue
    }

    override func viewWillTransition(
        to size: CGSize,
        with coordinator: UIViewControllerTransitionCoordinator
    ) {
        super.viewWillTransition(to: size, with: coordinator)
        let isLandscape = size.height < size.width
        self.statusBarHidden = isLandscape
        self.setNeedsStatusBarAppearanceUpdate()
    }
}

The issue only happens on iPad so I think @riccardo.dev's hypothesis around no notch and auto layout miscalculation sounds plausible. I also see the problem resolving itself by backgrounding the app and foregrounding it again, or simply by swiping up to show the app switcher.

iPadOS 26 - Status bar overlaps with navigation bar
 
 
Q