制作全屏的Cocoa应用程序

3
我想创建一个全屏Cocoa应用程序,但我的应用程序与传统的全屏应用程序略有不同。
这个应用程序将在所有其他内容下面,也就是在菜单栏和Dock等下面。它将有一个大图片覆盖桌面和图标,并且中间会有一个自定义的NSView,其中包含一个表格视图等。如果这个概念难以理解,那么这里有一张图片:

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

唯一可能有点困惑的是背景图片。这个背景图片不是电脑的壁纸,而是应用程序的一部分。因此,当应用程序启动时,它会进入全屏模式,并将自己放在 dock 和菜单栏下面以及所有其他窗口下面。因此,它会绘制背景图片来覆盖屏幕(包括桌面和图标)。然后在中间有一个自定义的 NSView 包含我的控件。
最好的方法是怎样做?
谢谢
2个回答

6
创建一个无边框的窗口,大小与菜单栏屏幕相同(屏幕0-而非[NSScreen mainScreen]),位于0,0位置,并且使用窗口级别kCGDesktopWindowLevel。
请注意,您需要观察屏幕框架更改通知(当用户更改屏幕尺寸时),并且应正确处理没有屏幕的情况(Mac无头)。

1
尝试过这个方法,确实在某种程度上有效。问题是其他窗口(例如Finder窗口和其他应用程序窗口)会被放置在我的全屏窗口下面。我需要它们位于我的全屏窗口之上。有什么办法可以解决这个问题吗?谢谢 - indragie
1
就像我说的那样,将窗口级别设置为 kCGDesktopWindowLevel - Peter Hosey

1

我认为@Peter Hosey的解决方案应该可以解决问题,但是如果要让其他窗口置顶,您可能需要将窗口级别更改为其他级别。

但是,请不要这样做。这将是Macintosh曾经见过的最丑陋的应用程序。有很多非常好的用户界面范例可供使用,“复制”Mac OS X的主桌面界面通常不是其中之一。除非您正在重新实现Time Machine或类似的东西。


请勿将其用作普通的OS X应用程序。我使用它基本上是作为OS X最小版本的桌面替代,用作紧急磁盘(没有Finder或Dock),因此需要制作自己的界面。我已经尝试将窗口级别设置为NSDockWindowLevel,但似乎没有效果。 - indragie
搞定了 :) 把窗口级别设置为-1,现在它显示在所有其他窗口下面 :D。 - indragie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接