东西显然出了毛病,我的第一次尝试询问以下问题:Mac/Cocoa:如何确定窗口的屏幕是否有菜单栏和Dock?
我想写应该把一个窗口或缩小其当前屏幕(显示器),而全屏模式遗留全屏切换功能不管空间的配置如何,其他屏幕的内容都不受影响。
我已经为“传统”空间模式工作,其中每个空间跨越所有连接的屏幕。在这种情况下,主屏幕上只有1个菜单栏和底座,可通过[[NSScreen screens] firstObject]
获得。因此,我可以这样做
if ([nsWin screen] == [[NSScreen screens] firstObject]) {
m_normalPresOpts = [nsApp presentationOptions];
[nsApp setPresentationOptions:m_normalPresOpts | NSApplicationPresentationAutoHideMenuBar | NSApplicationPresentationAutoHideDock];
}
得到码头和菜单栏为自动隐藏,只有当全屏窗口是主屏幕上。
苹果公司无法在不重新启动登录会话的情况下切换空间设置,所以我现在甚至不知道当屏幕有单独的空间时上述代码是如何工作的。我怀疑[[NSScreen screens] firstObject]
将仍然包含其左上角在(0,0)的屏幕,因此其他屏幕上的全屏窗口将继续显示菜单栏和Dock。另外,我仍然运行10.9,并且还希望能够立即为更高版本立即使用此功能。
有没有办法以编程方式确定如何配置空间或知道给定屏幕是否包含菜单栏/ Dock?谷歌搜索没有给我任何有关从代码做到这一点的结果。不知何故,我在我的磁盘文档中错过了[NSScreen +screensHaveSeparateSpaces]
,是我的问题的确切答案?
即使使用“legacy”Spaces模式,Dock也不一定在主屏幕上。它可以配置为显示在桌面的左侧或右侧,可以放在另一个屏幕上。 –
嗯,你说得对。如果辅助屏幕置于“主”屏幕下方,将其放在底部也是同样的事情。在这种情况下,您必须使用下面的Hofi的方法,或者将Dock设置为自动隐藏模式(如果可能,暂时)。 – RJVB
我不知道,如果这是一个常见的设置。我会发现,当我需要在一个屏幕上工作一段时间(认为是笔记本电脑)时,不会在同一屏幕上同时显示两个元素,并且它们的相对位置也会发生变化,这让我很烦恼。这不适用于底部底座和垂直堆叠的屏幕,但有多少人会*,即* :) – RJVB