Как обрезать подпредставления с помощью ZStack с SwiftUI?
Мне нужно обрезать представление за текстом, используя его прямоугольник. Когда я добавляю текст поверх этого прямоугольника высотой в 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)
}
}
}
}
Любые идеи? Не думаю, что смогу справиться с этим с помощью маски.
1 ответ
Решение
Иногда решением может быть " не делать", а не " делать-но".
Вот возможная реализация вышеуказанного принципа для решения вашей проблемы.
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)
}
}