Цвет фона NSTabView
У меня есть контроллер окна с синим цветом фона
Цвет фона всех дочерних контроллеров представления работает нормально с синим фоном, точно так же как их родительский контроллер окна, за исключением NSTabView NSTabViewController, который рисует с оригинальным серым фоном
Я не уверен, почему он не наследует цвет фона или почему он не прозрачен
Во всяком случае, чтобы решить проблему, я попробовал следующее
(1)
Я пытался редактировать фон CLayer
tabView.layer?.backgroundColor = NSColor.blue.cgColor
Я пытался поместить этот код везде, и единственный раз, когда он работал, это когда я обращался к CLayer из tabViewItem внутри его viewWillAppear
функция или viewDidAppear
или же viewWillLayout
, но проблема в том, что этот код не работает, пока я не выберу другую вкладку... то есть, когда tabViewController отображается в начале, цвет фона начального представления будет серым и не изменится на синий, пока я не выберу другую вкладку!
Насколько я понимаю, tabView
рисуется после его ребенка viewDidAppear
Вот почему он преодолел синий цвет, и когда выбрана другая вкладка, viewDidAppear
функция вызывается снова, меняя цвет на синий (так как tabView` уже нарисован)
(2)
Я пытался изменить drawsBackground
значение для false
когда отображается tabviewcontroller, фон такой же, как и у его окон, синий, но как только я выбираю другую вкладку, черный остаток остается от предыдущих элементов управления tabviewitem
любая идея, как решить эту проблему высоко ценится!
1 ответ
Я решил эту проблему, добавив Custom Box на начальную вкладку с требуемым цветом фона, и изменил его размер до размера представления.
В остальных видах вкладок я добавил эту строку в viewWillAppear
функция
tabView.layer?.backgroundColor = NSColor.blue.cgColor
Кастомная коробка выглядит как хак, но это единственный способ, которым я мог придумать
Альтернативное решение - разместить собственный NSBox
заNSTabView
с правильным размером и цветом фона. Никакого дополнительного кода не требуется, если все вкладки имеют прозрачный фон.