【发布时间】:2013-11-19 22:48:42
【问题描述】:
我们的应用需要覆盖到全屏。使用常规全屏(浏览器 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 的 sn-p,面板可以在全屏模式下工作,但不幸的是,KeyNote 不能全屏。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[_window setStyleMask:NSUtilityWindowMask | NSNonactivatingPanelMask];
[_window setLevel:NSFloatingWindowLevel];
[_window setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces|NSWindowCollectionBehaviorFullScreenAuxiliary];
}
【问题讨论】:
标签: objective-c macos cocoa overlay