【问题标题】:OSX overlay on native FullscreenModeOSX覆盖本机全屏模式
【发布时间】: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


    【解决方案1】:

    您不应该要求“activeSpaceDidChange”通知行,它似乎确实需要是一个 NSPanel。在您的 applicationDidFinishLaunching 中,只需执行以下操作即可:

    [_window setStyleMask:NSUtilityWindowMask | NSNonactivatingPanelMask];
    [_window setLevel:NSFloatingWindowLevel];
    [_window setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces|NSWindowCollectionBehaviorFullScreenAuxiliary];
    

    【讨论】:

    • 不幸的是,它不适用于 KeyNote 全屏,但至少它适用于 FSMode。谢谢:)
    • 该用户表示成功使用全屏游戏,但我无法让它在 Mountain Lion 上使用全屏 Mail。也许它适用于 KeyNote? stackoverflow.com/questions/13418343/…
    • 尝试设置更高的级别,如:[_window setLevel:CGShieldingWindowLevel()+10];
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 1970-01-01
    • 2019-10-27
    相关资源
    最近更新 更多