NSTabView背景颜色

时间:2017-09-08 10:17:19

标签: swift macos nstabview

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

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

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

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

(1)

我尝试编辑CLayer背景

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

我尝试将代码放在任何地方,唯一有效的时间是我从viewWillAppear函数或viewDidAppearviewWillLayout中的tabViewItem访问CLayer,但问题是这个代码在我选择另一个标签之前不起作用...即,当tabViewController在开头显示时,初始视图背景颜色为灰色,并且在我选择另一个标签之前不会变为蓝色!

根据我的理解,tabView是在其子viewDidAppear之后绘制的,这就是为什么它克服了蓝色顺序,当选择了另一个标签时,viewDidAppear再次调用函数将颜色更改为蓝色(因为已经绘制了tabView`)

(2)

我尝试将drawsBackground值更改为false

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

Black residue from the previous tab controls

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

2 个答案:

答案 0 :(得分:0)

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

在其余的标签视图中,我将此行添加到viewWillAppear功能

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

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

答案 1 :(得分:0)

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