NSWindow一直在不透明的NSView上绘制背景

时间:2017-02-26 21:39:32

标签: nswindow macos-sierra

长时间的潜伏者(在这里找到了许多答案!)并最终报名了我自己的问题。

我正在使用VST音频插件,并且主机传递给我的窗口出现问题。层次结构是:NSWindow - > NSView - > NSView - > myNSViewSubclass,添加:

[parent addSubview:myNSView];

myNSViewSubclass被声明为不透明,以及父NSView。然而,尽管不透明,NSWindow仍然将其背景画入我的空间。我甚至将NSWindow设置为不透明。

我尝试过一个儿童橱窗,但它也做了同样的事情。我尝试的任何音频主机都表现出相同的行为。 NSWindow行为发生了一些变化,我无法找到任何设置来阻止背景被绘制,甚至无法找到为什么忽略其子女的不透明性。

我在小牛队,一切都很完美。因此,为了准备添加AU版本的代码,我更新到Sierra,现在有了这个问题。

现在,我的解决方法是重新绘制整个窗口,但是虽然可行,但这在CPU上非常昂贵。

谢谢!

1 个答案:

答案 0 :(得分:0)

不是此问题的解决方案,而是可用的解决方法。我刚给NSWindow一个像素处理needsDisplayWithRect:现在我可以继续更新我标记为脏的rects。

当需要重新绘制整个窗口时,我也必须抓住特殊情况,例如当窗口失去焦点时。

它比我原来的CPU高出几个百分点,但仍然在我设定的范围内。

尽管如此,仍然希望得到适当的NSWindow行为。