仅在一个屏幕上绘制NSWindow

时间:2014-02-26 17:11:23

标签: cocoa nswindow

假设我们有两个屏幕方案和一个NSWindow, 位于屏幕1的边缘。 该窗口的一部分也显示在屏幕2上。

我想要实现的目标是仅在屏幕1上绘制窗口,而不在屏幕2上显示其余部分。

原因在于它是某种特殊表现的迷你窗口,而不是通常的窗口。

是否可以指定某个NSScreen来开启窗口?

2 个答案:

答案 0 :(得分:0)

不是我听说过的。

你可以做的是限制窗口的位置,例如通过NSWindowDelegatewindowDidMove:来听取位置变化并适当地重新定位窗口。

答案 1 :(得分:0)

两种截然不同的方法:

使用小牛:你在寻找的内容听起来就像是小牛队的“屏幕有独立空间”模式。在这种模式下,除了在拖动操作期间,窗口永远不会在两个屏幕上绘制,有时窗口在一个屏幕上绘制,其中任何区域突出到相邻的屏幕上。因此,如果您可以将使用限制在10.9,这可能会为您节省一些工作。

无边界Windows :您可以创建无边框非透明NSWindow,只需设置相应的标记即可。这就是应用程序创建非方形窗口的方式,窗口的可见区域现在完全取决于您。现在只需使用标准剪辑支持将绘图剪辑到一个屏幕上的区域。你不会有一个标准的标题栏或控件,除非你自己模拟它们,所以你必须自己实现拖动等等。你说你有“某种特殊行为的迷你窗口,而不是通常的窗口“所以这可能不是问题。