在 SwiftUI 中,阴影是通过 .shadow() 修饰符来实现的。它可以应用于视图上,让视图看起来更有层次感。以下是有关阴影的详细介绍和使用示例:
基本用法
Text("Hello, SwiftUI!")
.padding()
.background(Color.blue)
.cornerRadius(10)
.shadow(color: .gray, radius: 5, x: 0, y: 5) // 添加阴影

参数解释
color: 阴影的颜色,例如 .gray 或 Color.black.opacity(0.5)。
radius: 模糊半径,值越大阴影越模糊。
x: 阴影的水平偏移量(正值向右,负值向左)。
y: 阴影的垂直偏移量(正值向下,负值向上)。
使用示例
1、按钮的卡片阴影
Button(action: {
print("Button clicked")
}) {
Text("Tap me")
.padding()
.background(Color.white)
.cornerRadius(10)
.shadow(color: Color.black.opacity(0.2), radius: 10, x: 5, y: 5) // 添加柔和阴影
}
.padding()
.background(Color.blue.opacity(0.1)) // 模拟背景
.cornerRadius(10)

效果:按钮悬浮在背景上,有轻微阴影。
2、多重阴影(内外叠加)
可以通过多次调用 .shadow() 实现更复杂的效果,例如内外双重阴影。
Text("Double Shadow")
.padding()
.background(Color.white)
.cornerRadius(10)
.shadow(color: Color.black.opacity(0.2), radius: 5, x: -5, y: -5) // 第一层阴影
.shadow(color: Color.gray.opacity(0.3), radius: 10, x: 5, y: 5) // 第二层阴影

效果:文字周围有两个不同的阴影方向,营造出立体感。
3、使用阴影创建霓虹效果
通过透明度和颜色的叠加,可以模拟霓虹灯效果。
Text("Neon Glow")
.font(.largeTitle)
.fontWeight(.bold)
.foregroundColor(.white)
.padding()
.background(Color.black)
.cornerRadius(10)
.shadow(color: Color.red.opacity(0.7), radius: 10, x: 0, y: 0) // 红色外发光
.shadow(color: Color.blue.opacity(0.5), radius: 20, x: 0, y: 0) // 蓝色外发光

效果:文字边缘有红色和蓝色的发光阴影。
注意事项
1、阴影性能:复杂的阴影可能影响性能,特别是在低端设备上或包含大量动态内容时。
2、背景与阴影对比:确保阴影颜色与背景颜色有足够对比,以便更明显地呈现阴影效果。
3、适配深浅模式:根据深浅模式调整阴影颜色,例如深色模式下可以使用更浅的阴影颜色。