Text 如何将阴影添加到形状覆盖中而不遮挡其文本?迅捷

Text 如何将阴影添加到形状覆盖中而不遮挡其文本?迅捷,text,swiftui,overlay,rounded-corners,dropshadow,Text,Swiftui,Overlay,Rounded Corners,Dropshadow,我有一个可以切换可见性的文本视图。我希望文本显示在具有阴影的圆角矩形上 覆盖形状的问题在于,它必须不透明才能投射阴影,因此它会覆盖文本,如以下代码段所示: Text("Hello, world!") .font(.title) .foregroundColor(self.digitalOn ? Color.black : Color.white) .padding() .overlay(RoundedRectangle(cornerRadius: 10)

我有一个可以切换可见性的文本视图。我希望文本显示在具有阴影的圆角矩形上

覆盖形状的问题在于,它必须不透明才能投射阴影,因此它会覆盖文本,如以下代码段所示:

Text("Hello, world!")
    .font(.title)
    .foregroundColor(self.digitalOn ? Color.black : Color.white)
    .padding()
    .overlay(RoundedRectangle(cornerRadius: 10)
        .fill(Color.white)
        .shadow(color: Color.black.opacity(1), radius: 5, x: 10, y: 10)
    )
    .padding()
对于我来说,似乎疯狂的是,没有办法独立于前景控制文本的不透明度或颜色。我想我只是用完全错误的方式来处理这个问题。有人能纠正我吗?

这里有一个解决方案(用Xcode 11.4测试)

Text(“你好,世界!”)
.font(.title)
.foregroundColor(self.digitalOn?Color.black:Color.white)
.padding()
.背景(圆角半径:10)
.填充(颜色.白色)
)
.compositingGroup()//这是一个解决方案(使用Xcode 11.4测试)

Text(“你好,世界!”)
.font(.title)
.foregroundColor(self.digitalOn?Color.black:Color.white)
.padding()
.背景(圆角半径:10)
.填充(颜色.白色)
)

.compositingGroup()//我确实缺少了一些内容,但是为什么您要使用
.overlay()
而不是
.background()
?我不能使用.background,因为(1)阴影将应用于文本而不是形状,(2)我希望形状具有圆角。我确实缺少一些内容,但是为什么你要用
.overlay()
而不是
.background()
?我不能用.background,因为(1)阴影将应用于文本而不是形状,以及(2)我希望形状有圆角。谢谢你,Asperi!谢谢你,阿斯佩里!
Text("Hello, world!")
    .font(.title)
    .foregroundColor(self.digitalOn ? Color.black : Color.white)
    .padding()
    .background(RoundedRectangle(cornerRadius: 10)
        .fill(Color.white)
    )
    .compositingGroup()     // << here !!
    .shadow(color: Color.black.opacity(1), radius: 5, x: 10, y: 10) // << shadow to all composition
    .padding()