2017
Дословный ответ на этот вопрос:
"CALayers не были изменены при изменении границ своего UIView. Почему?"
в лучшую или худшую сторону
needsDisplayOnBoundsChange
по умолчанию имеет значение false в CALayer
.
решение
class CircularGradientViewLayer: CALayer {
override init() {
super.init()
needsDisplayOnBoundsChange = true
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override open func draw(in ctx: CGContext) {
go crazy drawing in .bounds
}
}
Действительно, я направляю вас к этому QA
https://stackoverflow.com/a/47760444/294884
, который объясняет, что, черт возьми, делает критическая настройка contentsScale
; вам обычно нужно в равной степени установить это при установке needsDisplayOnBoundsChange.