为什么 SwiftUI 没有在这个全屏封面上隐藏我的状态栏?
Why is SwiftUI not hiding my status bar on this fullScreenCover?
我的代码如下。 .statusBar(hidden: true)
应该在不同的地方吗?它是否取决于某些我不知道的 @Environment
?
import SwiftUI
struct ContentView: View {
@State private var isShowingFullScreenModal = false
var body: some View {
Text("Show Modal")
.font(.title)
.foregroundColor(.white)
.frame(width: 180, height: 44)
.padding()
.background(Color.blue)
.cornerRadius(12)
.onTapGesture {
isShowingFullScreenModal = true
}
.fullScreenCover(isPresented: $isShowingFullScreenModal) {
Color.green
.ignoresSafeArea(.all)
.onTapGesture {
isShowingFullScreenModal = false
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct GreenCover: View {
@Environment(\.presentationMode) var presentationMode
var body: some View {
ZStack {
Color.green
.ignoresSafeArea(.all)
VStack{
HStack{
Spacer()
Image(systemName: "xmark.circle.fill")
}
Spacer()
}
}
.statusBar(hidden: true)
}
}
这里是固定变体。使用 Xcode 12.1 / iOS 14.1
测试
.onTapGesture {
isShowingFullScreenModal = true
}
.statusBar(hidden: isShowingFullScreenModal) // << here !!
.fullScreenCover(isPresented: $isShowingFullScreenModal) {
有时候在我们的应用中,我们需要隐藏状态栏、导航栏等东西,只显示我们想显示的内容。要使用 swift 语言在我们的 iOS 应用程序中隐藏状态栏,我们需要完成非常基本的步骤。
方法一
在您的 info.plist
文件本身中,添加另一个名为 Status bar is initially hidden
的键并将其设置为 YES。
我注意到使用此方法时,状态栏仅在应用程序启动时隐藏。
方法二
转到您的应用委托文件,并添加这行代码:UIApplication.shared.isStatusBarHidden = true
这已在 iOS 13 上弃用。
方法三
你也可以加上这行代码,状态栏会隐藏起来
.edgesIgnoringSafeArea(.all)
.statusBar(hidden: true)
我的代码如下。 .statusBar(hidden: true)
应该在不同的地方吗?它是否取决于某些我不知道的 @Environment
?
import SwiftUI
struct ContentView: View {
@State private var isShowingFullScreenModal = false
var body: some View {
Text("Show Modal")
.font(.title)
.foregroundColor(.white)
.frame(width: 180, height: 44)
.padding()
.background(Color.blue)
.cornerRadius(12)
.onTapGesture {
isShowingFullScreenModal = true
}
.fullScreenCover(isPresented: $isShowingFullScreenModal) {
Color.green
.ignoresSafeArea(.all)
.onTapGesture {
isShowingFullScreenModal = false
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct GreenCover: View {
@Environment(\.presentationMode) var presentationMode
var body: some View {
ZStack {
Color.green
.ignoresSafeArea(.all)
VStack{
HStack{
Spacer()
Image(systemName: "xmark.circle.fill")
}
Spacer()
}
}
.statusBar(hidden: true)
}
}
这里是固定变体。使用 Xcode 12.1 / iOS 14.1
测试.onTapGesture {
isShowingFullScreenModal = true
}
.statusBar(hidden: isShowingFullScreenModal) // << here !!
.fullScreenCover(isPresented: $isShowingFullScreenModal) {
有时候在我们的应用中,我们需要隐藏状态栏、导航栏等东西,只显示我们想显示的内容。要使用 swift 语言在我们的 iOS 应用程序中隐藏状态栏,我们需要完成非常基本的步骤。
方法一
在您的 info.plist
文件本身中,添加另一个名为 Status bar is initially hidden
的键并将其设置为 YES。
我注意到使用此方法时,状态栏仅在应用程序启动时隐藏。
方法二
转到您的应用委托文件,并添加这行代码:UIApplication.shared.isStatusBarHidden = true
这已在 iOS 13 上弃用。
方法三
你也可以加上这行代码,状态栏会隐藏起来
.edgesIgnoringSafeArea(.all)
.statusBar(hidden: true)