Basically shadow applies to the whole layer not just the border. You may need to try like below:-
import UIKit
class GlowButton: UIButton {
private let gradientLayer = CAGradientLayer()
override init(frame: CGRect) {
super.init(frame: frame)
setupUI()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
setupUI()
}
private func setup() {
setTitle("▶ Start watching your Channel’s here", for: .normal)
setTitleColor(.white, for: .normal)
titleLabel?.font = UIFont.boldSystemFont(ofSize: 20)
layer.cornerRadius = 16
clipsToBounds = false
layer.borderWidth = 2
layer.borderColor = UIColor(red: 1, green: 0.2, blue: 0.4, alpha: 1).cgColor
layer.shadowColor = UIColor.red.cgColor
layer.shadowOpacity = 0.9
layer.shadowRadius = 15
layer.shadowOffset = .zero
gradientLayer.colors = [
UIColor(red: 0.5, green: 0, blue: 0.1, alpha: 1).cgColor,
UIColor(red: 1, green: 0, blue: 0.2, alpha: 1).cgColor
]
gradientLayer.startPoint = CGPoint(x: 0, y: 0.5)
gradientLayer.endPoint = CGPoint(x: 1, y: 0.5)
gradientLayer.cornerRadius = 16
layer.insertSublayer(gradientLayer, at: 0)
}
override func layoutSubviews() {
super.layoutSubviews()
gradientLayer.frame = bounds
}
}
