2017
Jawaban literal untuk pertanyaan ini:
"CALayer tidak diubah ukurannya pada perubahan batas UIView. Mengapa?"
apakah itu lebih baik atau lebih buruk
needsDisplayOnBoundsChange
defaultnya adalah false in CALayer
.
larutan,
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
}
}
Memang, saya mengarahkan Anda ke QA ini
https://stackoverflow.com/a/47760444/294884
yang menjelaskan, apa yang dilakukan oleh contentsScale
pengaturan kritis ; Anda biasanya perlu menyetelnya secara sama saat menyetel needsDisplayOnBoundsChange.