【问题标题】:NSWindow keep in back of all windows/appsNSWindow 保留在所有窗口/应用程序的后面
【发布时间】:2013-01-19 05:28:13
【问题描述】:

所以不太确定如何用谷歌搜索这个问题......但是,我想制作一个 NSWindow,驻留在所有其他窗口/应用程序的后面,我希望它显示在每个任务控制空间(还在后面)。

我见过其他应用程序这样做,所以我知道这是可能的,只是不知道如何。

(我指的是 Lion 的 Mission Control 功能,您可以在其中切换不同的空间。)

【问题讨论】:

    标签: macos osx-lion nswindow


    【解决方案1】:

    找到了答案,有一个方法/枚举可以让窗口出现在所有“空间”(任务控制)中。

    [self.window setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces];

    还有一种方法可以让窗口尽可能靠后。

    [self.window setLevel:kCGDesktopIconWindowLevelKey - 1];

    您所要做的就是使用这两种方法,它会完全按照我的要求进行。但是,我希望有一种方法可以防止它在从任务控制中心下来时出现动画(据我所知没有)。

    【讨论】:

    • 我不认为NSWindowBelow 是你想要的。 NSWindowOrderingMode 常量表示相对排序而不是绝对排序,旨在与 orderWindow:relativeTo: 和朋友一起使用。请参阅我的答案以获取指向正确常量集的指针,以及有关如何解决未解决的任务控制问题的信息。
    【解决方案2】:

    您想设置 NSWindow 的 levelcollectionBehavior 属性。

    您要使用的窗口级别将取决于您在窗口之后的行为。您可以在 CoreGraphics/CGWindowLevel.h 中找到可用窗口级别的常量。我建议尝试CGWindowLevelForKey(kCGDesktopIconWindowLevelKey) ± 1

    您指定的收集行为还取决于您所追求的行为。您问题中的简短描述表明NSWindowCollectionBehaviorStationary | NSWindowCollectionBehaviorCanJoinAllSpaces 可能是一个很好的起点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      • 1970-01-01
      • 1970-01-01
      • 2013-05-22
      • 2018-07-17
      • 1970-01-01
      相关资源
      最近更新 更多