Итак, мне нужна кнопка в iOS / swift, которая имеет внешнюю тень на нижней и правой границе и внутреннюю тень на верхней и левой границе. Я изучал учебные пособия в течение нескольких дней и придумал следующее решение, ПОЧЕМУ то, что мне нужно.
internal func Setup() {
self.backgroundColor = .white
self.contentEdgeInsets = UIEdgeInsets(top: 10, left:30, bottom: 10, right: 30)
// Outer shadow
self.layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 1).cgColor
self.layer.shadowOffset = CGSize(width: 10, height: 10)
self.layer.shadowOpacity = 1.0
self.layer.shadowRadius = 6
self.layer.masksToBounds = false
self.layer.cornerRadius = self.frame.height / 2
// call to add inner shadow
self.addInnerShadow()
}
internal func addInnerShadow() {
let cornerRadius = self.bounds.height / 2
let innerShadow = CALayer()
innerShadow.frame = bounds
// Shadow path (1pt ring around bounds)
let path = UIBezierPath(roundedRect: innerShadow.bounds.insetBy(dx: -1, dy: -1), cornerRadius: cornerRadius)
let cutout = UIBezierPath(roundedRect: innerShadow.bounds, cornerRadius: cornerRadius).reversing()
path.append(cutout)
innerShadow.shadowPath = path.cgPath
innerShadow.masksToBounds = true
// Shadow properties. Color is SAME as in outer shadow, but will come out differently
innerShadow.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 1).cgColor
innerShadow.shadowOffset = CGSize(width: 8, height: 8)
innerShadow.shadowOpacity = 1.0
innerShadow.shadowRadius = 6
innerShadow.cornerRadius = cornerRadius
// Add
layer.addSublayer(innerShadow)
}
Функция Setup () вызывается во время init () кнопки, и все это создает красивую затененную кнопку с закругленные углы.
![enter image description here](https://i.stack.imgur.com/ggEAA.png)
Но вопрос в том, почему верхняя внутренняя тень такая легкая? Он должен быть того же цвета, что и нижняя внешняя тень. Если я установлю любой другой цвет (например, красный), он всегда будет очень светлым, с оттенком нужного цвета. Почему? Можно ли контролировать цвет внутренней тени так же прямо, как я это делаю с внешней тенью?