使用模糊或亮度效果时无法固定状态栏位置 [SwiftUI]
Unable to fix status bar position when blur or brightness effect is used [SwiftUI]
我试图在单击自定义警报视图的取消按钮或确定按钮后简单地使 NavigationView return 恢复正常。但是,显示警报视图时我想要的模糊效果似乎会导致导航视图出现故障。我知道这是 blur/brightness 效果,与这两种效果一样,我反复试验并发现只有在使用其中任何一种时才会出现此故障(未显示亮度修改器 - 此处仅显示模糊效果) .在下面的 gif 中,您可以看到导航视图“忽略”了状态栏。我该如何解决这个问题?
我的代码:
struct Sidebar: View {
@Binding var documents: Documents
var body: some View {
List(Folder.folders, id: \.id) { folder in
Button {
documents = folder.documents
} label: {
Text(folder.title)
}
}
.navigationTitle("Folder Directory")
.toolbar {
ToolbarItem(placement: .bottomBar) {
Button {
Folder.folders.append(Folder())
} label: {
Image(systemName: "plus")
}
}
}
}
}
struct ContentView: View {
@State private var documents = Documents()
@State private var showDocumentView = false
@State private var showNewDocument = false
@State private var showNewFolder = false
@State private var newDocument = Document()
var body: some View {
ZStack {
NavigationView {
Sidebar(documents: $documents)
ScrollView {
LazyVGrid(columns: [GridItem(), GridItem(), GridItem()]) {
ForEach(documents.list, id: \.self.id) { doc in
FileView(doc)
}
}
}
.navigationTitle("Documents")
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
VStack {
NavigationLink(isActive: $showDocumentView) {
NoteView(document: newDocument)
} label: {
EmptyView()
}
Button {
newDocument = Document()
showNewDocument = true
} label: {
Image(systemName: "plus")
}
}
}
}
}
.disabled(showNewDocument)
.blur(radius: showNewDocument ? 30 : 0)
TextAlertView(visibilityBool: $showNewDocument, textInput: $newDocument.title) {
documents.list.append(newDocument)
showDocumentView.toggle()
}
.opacity(showNewDocument ? 1 : 0)
}
.animation(.spring(), value: showNewDocument)
.environmentObject(documents)
}
}
这似乎是 SwiftUI 的一个错误。我在 NavigationView 上使用亮度时遇到过类似的情况。
如果我使用.brightness(configuringFilter ? -0.05 : 0)
,我会失去导航栏:
如果我使用 .brightness(configuringFilter ? -0.05 : 0.0001)
我会得到想要的效果:
我试图在单击自定义警报视图的取消按钮或确定按钮后简单地使 NavigationView return 恢复正常。但是,显示警报视图时我想要的模糊效果似乎会导致导航视图出现故障。我知道这是 blur/brightness 效果,与这两种效果一样,我反复试验并发现只有在使用其中任何一种时才会出现此故障(未显示亮度修改器 - 此处仅显示模糊效果) .在下面的 gif 中,您可以看到导航视图“忽略”了状态栏。我该如何解决这个问题?
我的代码:
struct Sidebar: View {
@Binding var documents: Documents
var body: some View {
List(Folder.folders, id: \.id) { folder in
Button {
documents = folder.documents
} label: {
Text(folder.title)
}
}
.navigationTitle("Folder Directory")
.toolbar {
ToolbarItem(placement: .bottomBar) {
Button {
Folder.folders.append(Folder())
} label: {
Image(systemName: "plus")
}
}
}
}
}
struct ContentView: View {
@State private var documents = Documents()
@State private var showDocumentView = false
@State private var showNewDocument = false
@State private var showNewFolder = false
@State private var newDocument = Document()
var body: some View {
ZStack {
NavigationView {
Sidebar(documents: $documents)
ScrollView {
LazyVGrid(columns: [GridItem(), GridItem(), GridItem()]) {
ForEach(documents.list, id: \.self.id) { doc in
FileView(doc)
}
}
}
.navigationTitle("Documents")
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
VStack {
NavigationLink(isActive: $showDocumentView) {
NoteView(document: newDocument)
} label: {
EmptyView()
}
Button {
newDocument = Document()
showNewDocument = true
} label: {
Image(systemName: "plus")
}
}
}
}
}
.disabled(showNewDocument)
.blur(radius: showNewDocument ? 30 : 0)
TextAlertView(visibilityBool: $showNewDocument, textInput: $newDocument.title) {
documents.list.append(newDocument)
showDocumentView.toggle()
}
.opacity(showNewDocument ? 1 : 0)
}
.animation(.spring(), value: showNewDocument)
.environmentObject(documents)
}
}
这似乎是 SwiftUI 的一个错误。我在 NavigationView 上使用亮度时遇到过类似的情况。
如果我使用.brightness(configuringFilter ? -0.05 : 0)
,我会失去导航栏:
如果我使用 .brightness(configuringFilter ? -0.05 : 0.0001)
我会得到想要的效果: