stackoverflow-swift-question-1
Swift · · 1 min read
How to add shadow to border?
Stack Overflow Question
Link: https://stackoverflow.com/questions/79939205/how-to-add-shadow-to-border
Published: 2026-05-11T07:29:30Z
Updated: 2026-05-11T08:02:46Z
Author: steveSarsawa
Tags: ios, swift, uibutton
Summary:
<p>I'm trying to add shadow to Border, but it is not working. Shadow should as seen in image, but actual requirement is like Button will be clear background, and shadow around border. So how can I achieve it?</p>
private let borderGlowLayer = CAShapeLayer()
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
setup()
}
private func setup() {
backgroundColor = .clear
layer.masksToBounds = false
clipsToBounds = false
borderGlowLayer.fillColor = UIColor.clear.cgColor
borderGlowLayer.strokeColor = UIColor.clear.cgColor
borderGlowLayer.lineWidth = 2.5
borderGlowLayer.shadowOffset = .zero
borderGlowLayer.shadowRadius = 0
borderGlowLayer.shadowOpacity = 0
borderGlowLayer.masksToBounds = false
layer.addSublayer(borderGlowLayer)
}
override func layoutSubviews() {
super.layoutSubviews()
layer.masksToBounds = false
clipsToBounds = false
borderGlowLayer.frame = bounds
borderGlowLayer.path = UIBezierPath(roundedRect: bounds, cornerRadius: 20).cgPath
}
override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
super.didUpdateFocus(in: context, with: coordinator)
coordinator.addCoordinatedAnimations {
if self.isFocused {
self.borderGlowLayer.strokeColor = Colors.focused_border.cgColor
self.borderGlowLayer.shadowColor = Colors.focused_border.cgColor
self.borderGlowLayer.shadowRadius = 12
self.borderGlowLayer.shadowOpacity = 1.0
} else {
self.borderGlowLayer.strokeColor = UIColor.clear.cgColor
self.borderGlowLayer.shadowOpacity = 0.0
self.borderGlowLayer.shadowRadius = 0
}
}
}
}