#swiftui #statusbar
#swiftui #строка состояния
Вопрос:
Мой код приведен ниже. Должно .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)
}
}
Ответ №1:
Вот исправленный вариант. Протестировано с Xcode 12.1 / iOS 14.1
.onTapGesture {
isShowingFullScreenModal = true
}
.statusBar(hidden: isShowingFullScreenModal) // << here !!
.fullScreenCover(isPresented: $isShowingFullScreenModal) {
Ответ №2:
Иногда в нашем приложении нам нужно скрыть строку состояния, панель навигации и другие элементы и показывать только то содержимое, которое мы хотим отобразить. Чтобы скрыть строку состояния в нашем приложении для iOS с использованием языка swift, нам нужно выполнить очень простые шаги.
Способ 1
В самом вашем info.plist
файле добавьте еще один вызываемый ключ Status bar is initially hidden
и установите для него значение YES.
С помощью этого метода я заметил, что строка состояния скрывается только при запуске приложения.
Способ 2
Перейдите в файл делегата вашего приложения и добавьте эту строку кода: UIApplication.shared.isStatusBarHidden = true
Это устарело в iOS 13.
Способ 3
Вы также можете добавить эту строку кода, и строка состояния будет скрыта.
.edgesIgnoringSafeArea(.all)
.statusBar(hidden: true)
Комментарии:
1. Я не уверен, что это вообще полезно, если вы хотите ответить на мой вопрос. Это просто общее объяснение. В моем исходном коде есть
.statusBar(hidden: true)
. Если в соответствии с пунктом 3 вы хотите добавить конкретно.edgesIgnoringSafeArea(.all)
, то было бы полезно указать это явно. Или вы имели в виду, что обе строки должны быть добавлены? В таком порядке? Мой код.ignoresSafeArea(.all)
находится под Z-стеком. Вы хотите сказатьignores...
, что код должен предшествоватьstatus bar hidden...
коду? Мне очень жаль, но я вообще не понимаю, как это отвечает на мой вопрос. Не могли бы вы пояснить?