ios16: SafeArea get ignored in SwiftUI View

Viewed 122

I have the problem that the SafeArea get ignored in iOS 16. I am hosting a simple SwiftUI View inside a standard ViewController. See code below. The result is like in the picture. Left is iOS 15, where everything is like expected. Right side is iOS16.

Left ios15, right ios16

ViewController:

    override func viewDidLoad() {
        super.viewDidLoad()
        let myview = UIHostingController(rootView: MyView())
        view.addSubview(myview.view)
        myview.view.frame = view.frame
    }

SwiftUI View:

struct MyView: View {
    var body: some View {
        VStack {
            HStack{
                Spacer()
                Text("lol")
                    .font(.title)
                    .padding()
                    .background(Color.red)
            }
            Spacer()
        }
    }
}
1 Answers

You have to use largeTitle options in iOS16

I think this works fine.

let myview = UIHostingController(rootView: MyView())
myview.navigationItem.largeTitleDisplayMode = .never
let navController = UINavigationController(rootViewController: myview)
navController.navigationBar.prefersLargeTitles = true
view.addSubview(navController.view)
myview.view.frame = view.frame
Related