【发布时间】:2013-01-19 05:28:13
【问题描述】:
所以不太确定如何用谷歌搜索这个问题......但是,我想制作一个 NSWindow,驻留在所有其他窗口/应用程序的后面,我希望它显示在每个任务控制空间(还在后面)。
我见过其他应用程序这样做,所以我知道这是可能的,只是不知道如何。
(我指的是 Lion 的 Mission Control 功能,您可以在其中切换不同的空间。)
【问题讨论】:
所以不太确定如何用谷歌搜索这个问题......但是,我想制作一个 NSWindow,驻留在所有其他窗口/应用程序的后面,我希望它显示在每个任务控制空间(还在后面)。
我见过其他应用程序这样做,所以我知道这是可能的,只是不知道如何。
(我指的是 Lion 的 Mission Control 功能,您可以在其中切换不同的空间。)
【问题讨论】:
找到了答案,有一个方法/枚举可以让窗口出现在所有“空间”(任务控制)中。
[self.window setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces];
还有一种方法可以让窗口尽可能靠后。
[self.window setLevel:kCGDesktopIconWindowLevelKey - 1];
您所要做的就是使用这两种方法,它会完全按照我的要求进行。但是,我希望有一种方法可以防止它在从任务控制中心下来时出现动画(据我所知没有)。
【讨论】:
NSWindowBelow 是你想要的。 NSWindowOrderingMode 常量表示相对排序而不是绝对排序,旨在与 orderWindow:relativeTo: 和朋友一起使用。请参阅我的答案以获取指向正确常量集的指针,以及有关如何解决未解决的任务控制问题的信息。
您想设置 NSWindow 的 level 和 collectionBehavior 属性。
您要使用的窗口级别将取决于您在窗口之后的行为。您可以在 CoreGraphics/CGWindowLevel.h 中找到可用窗口级别的常量。我建议尝试CGWindowLevelForKey(kCGDesktopIconWindowLevelKey) ± 1。
您指定的收集行为还取决于您所追求的行为。您问题中的简短描述表明NSWindowCollectionBehaviorStationary | NSWindowCollectionBehaviorCanJoinAllSpaces 可能是一个很好的起点。
【讨论】: