Ale*_*eng 4 statusbar hide swiftui
我想隐藏 SwiftUI 中的状态栏。我尝试过“statusBar(hidden: true)”方法,但它不起作用。是否有任何解决方案可以在 SwiftUI 中实现。
演示代码如下:
var body: some View {
VStack {
Text("Hello World")
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
.background(Color.blue)
.edgesIgnoringSafeArea(.all)
.statusBar(hidden: true)
}
Run Code Online (Sandbox Code Playgroud)
Meh*_*lar 12
.edgesIgnoringSafeArea(.all)
.statusBar(hidden: true)
Run Code Online (Sandbox Code Playgroud)
尝试这个
我发现,iOS14中最有效的方法是进入info.plist. 但是,此方法始终有效,这意味着如果您想在单击 \xc2\xa0UIButton 时返回状态栏,那么此方法不适合您。
对我来说,它适用于整个应用程序,无论是否使用 NavigationView 实例。
\n“作为源代码”打开 Info.plist (见下图)并将这四行粘贴到其中:
\n<key>UIStatusBarHidden</key>\n<true/>\n<key>UIViewControllerBasedStatusBarAppearance</key>\n<false/>\nRun Code Online (Sandbox Code Playgroud)\n\n
根据您的意图,您可以通过几种不同的方式在 SwiftUI 项目中隐藏状态栏。我列出了一些没有特别的顺序。除了OPTION-2之外,所有示例都适用于使用 Xcode 11 和 Xcode 12 的 iOS 13 和 iOS 14 。
OPTION-1
在您的 info.plist 文件中,确保您有以下设置:
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
Run Code Online (Sandbox Code Playgroud)
添加以下 UIViewController 扩展
extension UIViewController {
func prefersStatusBarHidden() -> Bool {
return true
}
}
Run Code Online (Sandbox Code Playgroud)
OPTION-2(仅限 iOS 14 和 Xcode 12)
在您的 info.plist 文件中,确保您有以下设置:
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
Run Code Online (Sandbox Code Playgroud)
如此链接中所述,将 AppDelegate 添加到 SwiftUI 应用程序,但添加下面提到的行。 https://www.hackingwithswift.com/quick-start/swiftui/how-to-add-an-appdelegate-to-a-swiftui-app
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
UIApplication.shared.isStatusBarHidden = true // <== ADD THIS LINE
return true
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,您会收到已弃用的调用警告,但它应该仍然有效。
OPTION-3
在您的 info.plist 文件中,确保您有以下设置:
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
Run Code Online (Sandbox Code Playgroud)
确保您的初始 SwiftUI 视图是隐藏状态栏的导航视图。然后,如果您导航到选项卡栏视图或任何后续视图,状态栏将被隐藏。
struct ContentView: View {
var body: some View {
NavigationView {
NavigationLink(destination: MyTabView()) {
Text("Go To Tabview")
}
}
.edgesIgnoringSafeArea(.all)
.statusBar(hidden: true)
}
}
struct MyTabView: View {
var body: some View {
TabView {
TabView1().tabItem {
Text("Tab 1")
}
TabView2().tabItem {
Text("Tab 2")
}
}
}
}
struct TabView1: View {
var body: some View {
Text("Tab View 1")
}
}
struct TabView2: View {
var body: some View {
Text("Tab View 2")
}
}
Run Code Online (Sandbox Code Playgroud)
选项 4
使用 UIStatusBarManager
https://developer.apple.com/documentation/uikit/ustatusbarmanager