长时间的潜伏者(在这里找到了许多答案!)并最终报名了我自己的问题。
我正在使用VST音频插件,并且主机传递给我的窗口出现问题。层次结构是:NSWindow - > NSView - > NSView - > myNSViewSubclass,添加:
[parent addSubview:myNSView];
myNSViewSubclass被声明为不透明,以及父NSView。然而,尽管不透明,NSWindow仍然将其背景画入我的空间。我甚至将NSWindow设置为不透明。
我尝试过一个儿童橱窗,但它也做了同样的事情。我尝试的任何音频主机都表现出相同的行为。 NSWindow行为发生了一些变化,我无法找到任何设置来阻止背景被绘制,甚至无法找到为什么忽略其子女的不透明性。
我在小牛队,一切都很完美。因此,为了准备添加AU版本的代码,我更新到Sierra,现在有了这个问题。
现在,我的解决方法是重新绘制整个窗口,但是虽然可行,但这在CPU上非常昂贵。
谢谢!
答案 0 :(得分:0)
不是此问题的解决方案,而是可用的解决方法。我刚给NSWindow一个像素处理needsDisplayWithRect:现在我可以继续更新我标记为脏的rects。
当需要重新绘制整个窗口时,我也必须抓住特殊情况,例如当窗口失去焦点时。
它比我原来的CPU高出几个百分点,但仍然在我设定的范围内。
尽管如此,仍然希望得到适当的NSWindow行为。