SwiftUI Popover 背景与材质

问题描述 投票:0回答:1

我正在尝试创建一个具有半透明材质(常规、薄或超薄)背景的 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 swift swiftui popover
1个回答
1
投票

iOS 16.4+

iOS 16.4 引入了一个新的

.presentationBackground()
修饰符,可用于将背景材质设置为弹出窗口或模态呈现视图。只需传递您想要使用的材质作为参数即可。

.popover(isPresented: $showPopover) {
    Text("Hello, World!")
        .presentationBackground(.regularMaterial)
}

确保在

presentationBakcground()
.sheet() 闭包中使用
.popover()
修饰符
。更多文档
这里

旧版本

默认情况下,iPadOS 和 macOS 上的弹出窗口是半透明的。在 iOS 上,弹出窗口以模态视图的形式呈现。

.background(.ultraThinMaterial)

 直接应用于 ZStack 视图,但不应用于弹出框/模态视图本身。使用 
UIViewRepresentable
UIViewControllerRepresentable
 只会将 UIView/UIViewController 包装在 View 中,并且对弹出框/模式仍然没有影响。

当时(SwiftUI 4、Xcode 14.2),无法使用 SwiftUI 更改弹出框/模式视图的背景材质。

© www.soinside.com 2019 - 2024. All rights reserved.