Ios 如何在SwiftUI中使用ZStack剪裁子视图?

Ios 如何在SwiftUI中使用ZStack剪裁子视图?,ios,swiftui,subview,clipping,zstack,Ios,Swiftui,Subview,Clipping,Zstack,我需要使用文本的矩形来剪裁文本后面的视图。当我在这个1像素高的矩形上添加一个文本时,我需要它来“剪辑”下面的子视图,这样文本就可以读取 当然,如果我使用纯色背景,这很容易做到,因为我只需设置它,它将剪辑子视图 下面是一个测试它的POC: struct测试:视图{ 让渐变=渐变(颜色:[Color.blue,Color.purple]) var body:一些观点{ ZStack{ 矩形() .fill(线性渐变(渐变:渐变,起点:。前导,终点:。尾随)) .框架(宽:200,高:200) Z

我需要使用文本的矩形来剪裁文本后面的视图。当我在这个1像素高的矩形上添加一个文本时,我需要它来“剪辑”下面的子视图,这样文本就可以读取

当然,如果我使用纯色背景,这很容易做到,因为我只需设置它,它将剪辑子视图

下面是一个测试它的POC:

struct测试:视图{
让渐变=渐变(颜色:[Color.blue,Color.purple])
var body:一些观点{
ZStack{
矩形()
.fill(线性渐变(渐变:渐变,起点:。前导,终点:。尾随))
.框架(宽:200,高:200)
ZStack{
矩形()
.填充(颜色.白色)
.框架(宽度:100,高度:1,对齐:。中心)
文本(“XXXX”)
.背景(颜色.绿色)
}
}
}
}

有什么想法吗?我认为我不能用面具来处理它。

有时候解决办法可能是不去做而不是去做,而是去做

下面是上述原则的一个可能实现,以解决您的问题

var body: some View {
    ZStack {
        Rectangle()
            .fill(LinearGradient(gradient: gradient, startPoint: .leading, endPoint: .trailing))
            .frame(width: 200, height: 200)

        HStack(spacing: 0) {
            Rectangle()
                .fill(Color.white)
                .frame(width: 30, height: 1, alignment: .center)
            Text("XXXX")
            Rectangle()
                .fill(Color.white)
                .frame(width: 30, height: 1, alignment: .center)
        }
    }