假设我们有两个屏幕场景和一个 NSWindow
,
位于屏幕 1 的边缘。
该窗口的一部分也显示在屏幕 2 上。
我想要实现的目标是仅在屏幕 1 上绘制窗口,而不在屏幕 2 上显示其余部分。
原因是这是某种特殊行为的迷你窗口,而不是通常的窗口。
是否可以指定一个特定的 NSScreen 来仅在其上绘制窗口?
最佳答案
两种截然不同的方法:
使用 Mavericks:您所寻找的内容听起来像是 Mavericks 的“屏幕有单独的空间”模式的行为。在此模式下,除非在拖动操作期间,否则永远不会在两个屏幕上绘制窗口,在其他时间,窗口会在一个屏幕上绘制,并剪掉突出到相邻屏幕上的任何区域。因此,如果您可以将使用限制为 10.9,这可能会为您节省一些工作。
无边界窗口:您可以创建一个无边界非不透明的NSWindow
,只需设置适当的标志即可。这就是应用程序创建非方形窗口的方式,窗口的可见区域现在完全取决于您。现在,只需使用标准剪切支持将绘图剪切到一个屏幕上的区域即可。你不会有标准的标题栏或控件,除非你自己模拟它们,所以你必须自己实现拖动等。你说你有“某种特殊行为的迷你窗口,而不是通常的窗口”所以这可能不是问题。
关于cocoa - 仅在一个屏幕上绘制 NSWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22048446/