2

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

渐变背景

当然,如果我使用纯色背景颜色,这很容易做到,因为我只是设置它,它会剪切子视图。

在此处输入图像描述

这是一个 POC 来测试它:

struct test: View {
  let gradient = Gradient(colors: [Color.blue, Color.purple])
  
  var body: some View {
    ZStack {
      Rectangle()
        .fill(LinearGradient(gradient: gradient, startPoint: .leading, endPoint: .trailing))
        .frame(width: 200, height: 200)
        
      ZStack {
        Rectangle()
          .fill(Color.white)
          .frame(width: 100, height: 1, alignment: .center)
        Text("XXXX")
          .background(Color.green)
      }
    }
  }
}

有任何想法吗?我不认为我可以用面具处理它。

4

1 回答 1

2

有时解决方案可能是not-to-do而不是to-do-but

这是解决您的问题的上述原则的可能实现。

演示

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)
        }
    }
于 2020-08-17T17:56:57.133 回答