Thanks for being a part of WWDC25!

How did we do? We’d love to know your thoughts on this year’s conference. Take the survey here

Xcode26 build app with iOS26, UISplitViewController UI issue

Our project using UISplitViewController as the root view controller for whole app. And when using the xocde26 to build app in iOS26, the layout of page is uncorrect. for iPhone, when launch app and in portrait mode, the app only show a blank page:

and when rotate app to landscape, the first view controller of UISplitViewController's viewControllers will float on second view controller:

and this float behavior also happens in iPad:

below is the demo code: AppDelegate.swift:

import UIKit

@main
class AppDelegate: UIResponder, UIApplicationDelegate {

    let window: UIWindow = UIWindow()

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        let vc = SplitViewController(primary: TabBarViewController(), secondary: ViewController())
        window.rootViewController = vc
        window.makeKeyAndVisible()
        return true
    }
}

SplitViewController:

import UIKit

class SplitViewController: UISplitViewController {

    init(primary: UIViewController, secondary: UIViewController) {
        super.init(nibName: nil, bundle: nil)
        
        preferredDisplayMode = .oneBesideSecondary
        presentsWithGesture = false
        delegate = self

        viewControllers = [primary, secondary]
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

extension SplitViewController: UISplitViewControllerDelegate {
}

TabBarViewController.swift:

import UIKit

class FirstViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .red
        tabBarItem = UITabBarItem(title: "Home", image: UIImage(systemName: "house"), tag: 0)
    }
}

class SecondViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .purple
        tabBarItem = UITabBarItem(title: "Setting", image: UIImage(systemName: "gear"), tag: 1)
    }
}

class TabBarViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let firstVC = FirstViewController()
        let secondVC = SecondViewController()
        
        tabBar.backgroundColor = .orange
        viewControllers = [firstVC, secondVC]
    }
}

ViewController.swift:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .systemPink
    }
}

And I have post a feedback in Feedback Assistant(id: FB18004520), the demo project code can be found there.

Many thanks for filing feedback! This is a UIKit bug and we are investigating the issue.

Xcode26 build app with iOS26, UISplitViewController UI issue
 
 
Q