Цвет фона 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с правильным размером и цветом фона. Никакого дополнительного кода не требуется, если все вкладки имеют прозрачный фон.

Другие вопросы по тегам