【问题标题】:Making a full screen Cocoa app制作全屏 Cocoa 应用
【发布时间】:2010-12-03 12:31:29
【问题描述】:

我想创建一个全屏 Cocoa 应用程序,但是我的应用程序与传统的全屏应用程序略有不同。

此应用程序将位于其他所有内容下方,因此位于菜单栏和 Dock 等下方。它将有一个大图像覆盖桌面和图标,中间有一个自定义 NSView 和一个表格视图等。如果这个概念很难理解,那么这里是一张图片:

http://img10.imageshack.us/img10/6308/mockupo.png

唯一可能有点混乱的部分是背景图片。此背景图片不是计算机的壁纸,而是应用程序的一部分。因此,当应用程序启动时,它会进入全屏模式,并将自身置于 Dock 和菜单栏下方,以及所有其他窗口下方。所以它绘制背景图像以覆盖屏幕(包括桌面和图标)。然后在中间有一个自定义的 NSView 包含我的控件。

最好的方法是什么?

谢谢

【问题讨论】:

    标签: objective-c cocoa fullscreen


    【解决方案1】:

    创建一个无边框窗口,菜单栏屏幕的大小(屏幕 0-not [NSScreen mainScreen]),定位在 0,0,窗口级别为 kCGDesktopWindowLevel

    请记住,您需要观察屏幕框架更改通知(当用户更改屏幕尺寸时),并且您应该正确处理完全没有屏幕的情况(无头 Mac)。

    【讨论】:

    • 试过这个,它在一定程度上确实有效。问题是其他窗口(例如 Finder 窗口和其他应用程序窗口)位于我的全屏窗口下方。我需要将它们定位在我的全屏窗口上方。有什么方法可以使这项工作?谢谢
    • 如我所说,将窗口级别设置为kCGDesktopWindowLevel
    【解决方案2】:

    我认为@Peter Hosey 的解决方案应该可行,但要让其他窗口位于顶部,您可能需要将窗口级别更改为其他值。

    但是,我恳求你,不要这样做。这将是 Macintosh 所见过的最有 bug 的应用程序。您可以使用许多非常好的用户界面范例,“复制”Mac OS X 的主桌面界面通常不是其中之一。也就是说,除非您要重新实现 Time Machine 或类似的东西。

    【讨论】:

    • 这不能用作普通的 OS X 应用程序。我基本上将它用作作为紧急磁盘使用的最小版本 OS X 的桌面替代品(没有 Finder 或 Dock,所以我需要制作自己的界面)。我尝试将窗口级别设置为 NSDockWindowLevel 但似乎没有效果。
    • 想通了 :) 将窗口级别设置为 -1,现在它显示在所有其他窗口下方:D。
    猜你喜欢
    • 2012-01-24
    • 2012-09-14
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多