首页 > 解决方案 > SwiftUI:带有文本视图的混合模式使重叠区域为白色,其余为黑色

问题描述

我正在尝试制作一个文本视图,将与另一个视图重叠的区域的颜色切换为白色,其余部分为黑色。

下面是这个问题之后的代码试用,它使用混合模式,但它使重叠区域变为绿色,并且它基于背景视图颜色。 我希望它始终为白色,而不管重叠的视图颜色和文本视图的其余部分为黑色

struct ContentView: View {
    var body: some View {
        ZStack() {
            Color.purple.frame(width: 200, height: 40, alignment: .center)
                .offset(x: 0, y: 20)

            Text("Over")
                .foregroundColor(Color.white)
                .font(.system(size: 55, weight: .bold, design: .rounded))
                .offset(x: 10, y: 0)
                .blendMode(.difference)

        }
        .frame(width: 200, height: 100, alignment: .center)
    }
}

当前结果的截图

标签: iosswiftswiftui

解决方案


请改用 2 个文本和一个蒙版。

struct ContentView: View {
    var body: some View {
        ZStack {
            Color.purple
                .frame(width: 200, height: 40, alignment: .center)
                .offset(x: 0, y: 20)

            Text("Over")
                .foregroundColor(Color.black)
                .font(.system(size: 55, weight: .bold, design: .rounded))
                .offset(x: 10, y: 0)

            Text("Over")
                .foregroundColor(Color.white)
                .font(.system(size: 55, weight: .bold, design: .rounded))
                .offset(x: 10, y: 0)
                .mask(Rectangle().frame(height: 20).offset(x: 0, y: 10))

        }
        .frame(width: 200, height: 100, alignment: .center)
    }
}

结果:

结果截图


推荐阅读