0

我有两个NSWindows,其中一个是另一个的孩子。基本上我想要完成的是让孩子弹出并似乎扩展了父母。如果你愿意,可以把它想象成打开一本书:封面翻开并以与扉页相同的 Z 顺序结束。

但是我有一个问题,其中一个窗口总是在另一个窗口上投下阴影。有没有办法让它们在同一个 Z 上,这样既不会在另一个上投下阴影,又会在它们下方的窗户上投下阴影?

4

1 回答 1

1

这能行吗?使用现有的子窗口,并使用 setShadow:false 调用移除阴影。同时在两个现有窗口后面创建第三个虚拟窗口 Z-ordered。使该窗口始终与真正的子窗口具有相同的大小和形状,并留下阴影。

这有两个可能的问题:(1)在两个阴影相交的点处有一个奇怪的“双阴影”。(2)有焦点的窗口投射的阴影远大于没有焦点的窗口投射的阴影。因此,如果焦点在两个窗口之间转移,阴影可能会改变大小。不知道你会如何解决这个问题。

否则,您唯一的选择可能是将关闭阴影的两个窗口放在一个会投射一个阴影的令人讨厌的容器窗口中。这将是一个非常激进的 UI 更改,但在我的经验中,修补应用程序“外边缘”的默认外观或尝试在不使用操作系统功能的情况下编写自己的部分透明度的应用程序很少能顺利运行。

于 2012-08-28T06:17:40.920 回答