0

我有一个蓝色背景色的窗口控制器

所有子视图控制器的背景颜色都可以正常使用蓝色背景,就像它们的父窗口控制器一样,除了 NSTabViewController 的 NSTabView,它使用原始的灰色背景进行绘制

我不确定为什么它不继承背景颜色,或者为什么它不透明

无论如何,为了解决这个问题,我尝试了以下

(1)

我尝试编辑 CLayer 背景

tabView.layer?.backgroundColor = NSColor.blue.cgColor

我尝试将该代码放在任何地方,它唯一有效的时间是当我从其viewWillAppear函数 orviewDidAppear中的 tabViewItem 访问 CLayer 时viewWillLayout,但问题是该代码在我选择另一个选项卡之前不起作用......即当 tabViewController显示在开头,初始视图背景颜色为灰色,直到我选择另一个选项卡才变为蓝色!

From my understanding, the tabViewis drawn after its child viewDidAppear, that's why it overcame the blue color order, and when another tab is selected, the viewDidAppearfunction is called again changing the color to blue (since the tabView` is already drawn)

(2)

我试图将drawsBackground值更改为false

当显示 tabviewcontroller 时,背景就像它的窗口一样,蓝色,但是一旦我选择另一个选项卡,之前的 tabviewitem 控件就会留下黑色残留物

上一个选项卡控件中的黑色残留物

任何想法如何解决这个问题都非常感谢!

4

2 回答 2

0

另一种解决方案是在具有正确大小和背景颜色的NSBox 后面放置一个自定义。NSTabView只要所有选项卡都具有透明背景,就不需要进一步的代码。

于 2019-12-01T14:18:53.463 回答
0

我通过将自定义框添加到具有所需背景颜色的初始选项卡来解决此问题,并将其调整为视图的大小

在其余的选项卡视图中,我添加了这一行以viewWillAppear发挥作用

tabView.layer?.backgroundColor = NSColor.blue.cgColor

自定义框感觉像是一个黑客,但这是我能想出的唯一方法

于 2017-09-08T21:43:41.547 回答