Когда я устанавливаю свойство backgroundColor
моего подкласса Xib-экземпляра UIView
, цвет фона представления не изменяется, а остается цветом, установленным в Xib.
Воспроизведение проблемы
Я создал подкласс UIView
, назовем его MyView
вместе с Xib, из которого я его создаю.Используя Interface Builder, я установил синий цвет фона представления в Xib.
Я добавил экземпляр MyView
в качестве подпредставления основного представления моего приложения.Он выглядит синим, как и ожидалось.
Затем я добавил розетку myView
, ссылающуюся на этот экземпляр MyView
, и кнопку, действие которой пытается изменить цвет фона представления следующим образом:
@IBOutlet weak var debugView: MyView!
@IBAction func debug(_ sender: Any) {
myView.backgroundColor = UIColor.green
}
Я ожидал, что цвет фона myView
изменится на зеленый;вместо этого он остается синим, как и раньше.
Наблюдения
Странно, если я проверяю цвет фона представления в отладчике, кажется, что свойство было установлено в зеленый цвет, как и ожидалось,хотя изменения не видны:
(lldb) p debugView.backgroundColor == UIColor.blue
(Bool) $R1 = false
(lldb) p debugView.backgroundColor == UIColor.green
(Bool) $R2 = true
Я также попытался принудительно перерисовать представление, используя setNeedsDisplay()
, но безрезультатно.
Почему невнешний вид пользовательского представления отражает его свойство backgroundColor
?