Почему настройка backgroundColor не оказывает видимого влияния на мой пользовательский UIView? - PullRequest
0 голосов
/ 24 июня 2018

Когда я устанавливаю свойство 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?

1 Ответ

0 голосов
/ 24 июня 2018

Вы, вероятно, добавили представление из пера в качестве подпредставления к своему настраиваемому представлению в файле swift, поэтому при изменении цвета фона вы не увидите изменений. вам нужно изменить цвет фона подпредставления вашего отладочного просмотра, чтобы увидеть изменение цвета. Например: -

self.debugView.subviews.first?.backgroundColor = self.debugView.subviews.first?.backgroundColor == UIColor.blue ? UIColor.black : UIColor.blue

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...