首页 > 解决方案 > SwiftUI 弹出框背景颜色

问题描述

UIPopoverPresentationController使用 UIKit,我可以使用's自定义弹出框的背景颜色backgroundColor

这将改变包括箭头在内的颜色。

如何使用 SwiftUI 完成此任务?当我更改弹出内容的背景颜色时,它不包括箭头:

带有不同颜色箭头的弹出框示例

标签: swiftui

解决方案


您可以使用.scaleEffect(…)使您的背景视图占用更多空间。当它大于弹出框的内容时,它将填充箭头。

struct ContentView: View {
    @State var popoverVisible = false

    var body: some View {
        VStack {
            Button("Open Popover") {
                self.popoverVisible = true
            }
            .popover(isPresented: $popoverVisible) {
                ZStack {
                    // Scaled-up background
                    Color.blue
                        .scaleEffect(1.5)
                    
                    Text("Hello world")
                    .foregroundColor(.white)
                    .padding()
                }
            }
        }
    }
}

设备截图


推荐阅读