我们的应用程序需要覆盖到全屏。使用常规全屏(浏览器 Flash 全屏,如 Prezi 或 Youtube)它可以工作,但使用本机全屏(Lion 全屏、全屏模式、其他空间)它不会...
问题是,如何强制窗口显示在全屏模式和 KeyNote 全屏模式?
示例应用程序:
_window 是一个 NSWindow(NSPanel 也不起作用)
- (void) activeSpaceDidChange:(NSNotification *)aNotification {
if ([_window isVisible] && ![_window isOnActiveSpace])
[_window orderOut:self];
[_window setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces | NSWindowCollectionBehaviorFullScreenAuxiliary];
[_window makeKeyAndOrderFront:self];
[_window setCollectionBehavior:NSWindowCollectionBehaviorMoveToActiveSpace | NSWindowCollectionBehaviorFullScreenAuxiliary];
}
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[_window setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces | NSWindowCollectionBehaviorFullScreenAuxiliary];
[_window orderFrontRegardless];
[_window setLevel:NSStatusWindowLevel];
[_window setHidesOnDeactivate: NO];
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(activeSpaceDidChange:) name:NSWorkspaceActiveSpaceDidChangeNotification object:nil];
}
编辑:
现在使用 Tyler 的代码片段,面板可以在全屏模式下工作,但不幸的是不能在 KeyNote 全屏下工作。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[_window setStyleMask:NSUtilityWindowMask | NSNonactivatingPanelMask];
[_window setLevel:NSFloatingWindowLevel];
[_window setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces|NSWindowCollectionBehaviorFullScreenAuxiliary];
}