SwiftUI 删除内部阴影

fly*_*ymg 2 shadow swiftui

如何去除内部的蓝色阴影,保持内部透明

Circle()
.frame(width: 30, height: 30, alignment: .center)
.padding()
.overlay(
    RoundedRectangle(cornerRadius: 20)
        .strokeBorder(Color.primary, lineWidth: 2)
        .shadow(color: Color.blue.opacity(1), radius: 3, x: 3, y: 3)
)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

And*_*kyi 7

这个解决方案看起来很重载,但这里我们有 3 层:阴影、蒙版和描边。

Circle()
    .frame(width: 30, height: 30, alignment: .center)
    .padding()
    .overlay(
        ZStack {
            RoundedRectangle(cornerRadius: 20) // shadow layer
                .shadow(color: Color.blue.opacity(1), radius: 3, x: 3, y: 3)
            RoundedRectangle(cornerRadius: 20) // mask layer
                .blendMode(.destinationOut)
            RoundedRectangle(cornerRadius: 20) // stroke layer
                .strokeBorder(Color.primary, lineWidth: 2)
        }
            .compositingGroup()
    )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

查看这篇文章以了解更多详细信息如何在 SwiftUI 中应用反向蒙版