首页 > 解决方案 > SwiftUI 反转掩码

问题描述

我正在尝试使用 swiftui 创建一个类似于屏幕截图中的视图。顶部框架应该是浅色的,其他地方应该是深色的。 SwiftUI 添加反转掩码 我试图在这里更改代码,但我做不到。我该怎么做?

在此处输入图像描述

到目前为止我来过的地方:黑色不显示全屏和面具不工作

func HoleShapeMask(in rect: CGRect) -> Path {
    return
        Path { path in
        path.move(to: CGPoint(x: rect.minX, y: rect.minY))
        path.addLine(to: CGPoint(x: rect.maxX, y: rect.minY))
        path.addLine(to: CGPoint(x: rect.maxX, y: rect.maxY))
        path.addLine(to: CGPoint(x: rect.minX, y: rect.maxY))
        path.addLine(to: CGPoint(x: rect.minX, y: rect.minY))
    }

}

struct ContentView: View {
    @State var rect :CGRect = .zero

    var body: some View {

        GeometryReader{g in
            Text("deneme")
                .foregroundColor(.blue)
                .frame(width: 124, height: 100, alignment: .center)
                .background(Color.red)
                .overlay(
                    GeometryReader { gp in
                        Color.clear.opacity(0.00001)
                            .onAppear(){
                                rect = gp.frame(in: .named("deneme"))
                            }
                    }
                )
        }
        .coordinateSpace(name: "deneme")
        .overlay(
            Rectangle()
                .fill(Color.black.opacity(0.8))
            .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .center)
                .mask(HoleShapeMask(in: rect).fill(style: FillStyle(eoFill: true)))
        )
    }
}

我的代码截图: 我的编解码器

我想要这个屏幕: 万提

标签: swiftuimaskcgrect

解决方案


推荐阅读