'SwiftUI - How to show shadow only on top side?
I am trying to give shadow to my VStack (only at top) but when I do like below shadow is visible to all sides like button, Text. But I am trying to give border to only container.
.background(Color.white // any non-transparent background
.shadow(color: Color.red, radius: 10, x: 0, y: 0)
)
Thank you for help
Solution 1:[1]
Try using the mask(_:) modifier, as shown in this answer.
.background(
Color.white // any non-transparent background
.shadow(color: Color.red, radius: 10, x: 0, y: 0)
.mask(Rectangle().padding(.top, -20)) /// here!
)
Result:
Solution 2:[2]
You could put a LinearGradient at the top of the VStack to achieve the "top shadow" effect.
VStack(spacing: 0) {
LinearGradient(colors: [.white, Color(.sRGB, white: 0.85, opacity: 1)], startPoint: .top, endPoint: .bottom)
.frame(height: 6)
.opacity(0.8)
// Button()...
}
Result:
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | aheze |
| Solution 2 | David B. |



