Остановить тень CALayer от влияния на subviews?
У меня есть пользовательский UIControl
, и я хочу, чтобы у него была тень, поэтому я установил соответствующие свойства на layer
. При желании тень появляется вокруг представления, но тень также появляется под текстом UILabel
, который является подвью. Как вы это прекратите? Мне нужна тень вокруг внешнего наблюдения.
![enter image description here]()
...
init() {
label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
self.translatesAutoresizingMaskIntoConstraints = false
addSubview(label)
self.layer.masksToBounds = false
self.layer.shadowColor = UIColor.blackColor().CGColor
self.layer.shadowOpacity = 1.0
self.layer.shadowRadius = 2.0
// Adding these lines trying to explicitly stop shadow on label...
label.layer.shadowOpacity = 0
label.layer.shadowColor = nil
...
}
Ответы
Ответ 1
Это происходит, когда родительский вид имеет альфа меньше 1,0 или не имеет цвета фона (то есть установлен для очистки цвета). В этом случае тень переводится в подпункты. Подробнее см. Мой ответ здесь.
Apple Документы подтверждают это:
На рисунке A-7 показаны несколько разных версий одного и того же слоя образца с применением красной тени. Левая и средняя версии включают цвет фона, поэтому тень появляется только вокруг границы слой. Однако версия справа не содержит фона цвет. В этом случае тень применяется к содержимому слоев, границы и подслои.
![Shadow]()