cocoa - 仅在一个屏幕上绘制 NSWindow

标签 cocoa nswindow

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

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

原因是这是某种特殊行为的迷你窗口,而不是通常的窗口。

是否可以指定一个特定的 NSScreen 来仅在其上绘制窗口?

最佳答案

两种截然不同的方法:

使用 Mavericks:您所寻找的内容听起来像是 Mavericks 的“屏幕有单独的空间”模式的行为。在此模式下,除非在拖动操作期间,否则永远不会在两个屏幕上绘制窗口,在其他时间,窗口会在一个屏幕上绘制,并剪掉突出到相邻屏幕上的任何区域。因此,如果您可以将使用限制为 10.9,这可能会为您节省一些工作。

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

关于cocoa - 仅在一个屏幕上绘制 NSWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22048446/

相关文章:

objective-c - 允许单击并拖动 View 以拖动窗口本身?

iphone - 具有多个属性的 NSXMLParser

macos - 将 iCal 事件导出到 osx 上的 .ics 文件

objective-c - IOKit 获取当前电源

macos - 操作 Mac 应用程序中的窗口

macos - 如何在 OSX 中跨多个屏幕全屏运行

objective-c - Cocoa/Xcode - OSX 复古兼容性

ios - ARC 并在编译时不指定类就向对象发送消息

cocoa - 将 NSWindow 显示为工作表的正确方法

objective-c - 如何从 Tweetbot 制作一个像这样的 NSWindow?