我正在尝试创建一个具有半透明材质(常规、薄或超薄)背景的 SwiftUI Popover。显示 Popover 内容背后的内容的一些活力。
我尝试将
ultraThin
和其他材质类型添加到背景视图中。它们对弹出窗口背景没有任何影响。还尝试通过创建视觉效果视图来创建UIViewRepresentable
。尽管如此,对弹出窗口背景没有任何影响。
.popover(isPresented: $showPopover) {
ZStack {
Text("My popover content")
.font(.title)
}
.frame(width: 250, height: 350, alignment: .center)
.background(.ultraThinMaterial)
}
iOS 16.4 引入了一个新的
.presentationBackground()
修饰符,可用于将背景材质设置为弹出窗口或模态呈现视图。只需传递您想要使用的材质作为参数即可。
.popover(isPresented: $showPopover) {
Text("Hello, World!")
.presentationBackground(.regularMaterial)
}
确保在
presentationBakcground()
或 .sheet()
闭包中使用.popover()
修饰符。更多文档这里。 旧版本
.background(.ultraThinMaterial)
直接应用于 ZStack 视图,但不应用于弹出框/模态视图本身。使用
UIViewRepresentable
或
UIViewControllerRepresentable
只会将 UIView/UIViewController 包装在 View 中,并且对弹出框/模式仍然没有影响。当时(SwiftUI 4、Xcode 14.2),无法使用 SwiftUI 更改弹出框/模式视图的背景材质。