Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
136 views
in Technique[技术] by (71.8m points)

ios - remove status bar in SwiftUI

Trying to hide the status bar in iOS SwiftUI on the first view.

import SwiftUI

struct ContentView: View {

    var body: some View {
           
        NavigationView {
            VStack {

                NavigationLink(destination: ContentViewC()) {
                    Text("New View")
                }  
            }.offset(y: 100)
            
        }.navigationViewStyle(StackNavigationViewStyle())
        .accentColor(.white)
        .statusBar(hidden: true)
    }
}

The status bar is still showing on the initial view. Any suggestions?

question from:https://stackoverflow.com/questions/65945802/remove-status-bar-in-swiftui

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This looks like a SwiftUI bug. The possible valid workaround is to use UIKit view controller, as representable, to manage status bar hidden.

Here is a demo of possible solution. Tested with Xcode 12.4 / iOS 14.4

class StatusBarHideHelper: UIViewController {
    override var prefersStatusBarHidden: Bool { true }    // << important !!
}

struct StatusBarHideHelperView: UIViewControllerRepresentable {
    func makeUIViewController(context: Context) -> UIViewController {
        StatusBarHideHelper()
    }
    
    func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
    }
}

and now we can use it in our SwiftUI view hierarchy, like

var body: some View {
       
    NavigationView {
        VStack {

            NavigationLink(destination: ContentViewC()) {
                Text("New View")
            }  
        }.offset(y: 100)
        
    }.navigationViewStyle(StackNavigationViewStyle())
    .background(StatusBarHideHelperView())                // << this !!
    .accentColor(.white)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...