【发布时间】:2014-05-21 09:35:46
【问题描述】:
在 OSX 上,窗口只能是特定高度。它认为这个最大高度是:屏幕高度 - 菜单栏高度 - 标题栏高度 - 停靠高度(仅当它可见时)。
是否有一种简单的方法可以获取此值,或者您如何单独获取这些值?这是正确的吗?
【问题讨论】:
标签: macos user-interface window titlebar dock
在 OSX 上,窗口只能是特定高度。它认为这个最大高度是:屏幕高度 - 菜单栏高度 - 标题栏高度 - 停靠高度(仅当它可见时)。
是否有一种简单的方法可以获取此值,或者您如何单独获取这些值?这是正确的吗?
【问题讨论】:
标签: macos user-interface window titlebar dock
如果您可以使用Cocoa,请尝试NSScreen 类的visibleFrame 方法。
【讨论】:
参见 NSScreen visibleFrame 和屏幕 注册并办理 NSApplicationDidChangeScreenParametersNotification
人们使用多个显示器、外部显示器并更改他们的显示偏好。
您还需要决定如何处理 Dock。
当一个窗口跨越多个显示器时,您还需要计算高度。 或者,如果它应该是最大尺寸。
您需要考虑窗口恢复处理。
您最好考虑处理睡眠和唤醒通知。
最后,您需要仔细测试。这并不难,但是您自己的设置可能无法反映许多动态。
还有一个。请记住,即使 Dock 隐藏(左右或底部),操作系统也会尝试为 Dock 边缘保留一个小空间,NSScreen 方法可以解决此问题。如果我没记错的话,在小牛队似乎是 4 分。 当您的应用程序处于活动状态且位于前端时,您可以使您的应用程序在 Dock 不可用的情况下运行。但是通过 API 强制执行此操作也会隐藏 menuBar。如果你需要这样做,要么做全屏,要么考虑增加很多窗口级别。 (这并不像听起来那么有价值,但探索起来很有趣)
最后,这些内容有时会在主要操作系统版本中发生变化。因此,您可能需要适应不同的操作系统版本。
【讨论】:
在 OS X 上,窗口只能是特定高度。
我找不到关于窗口大小限制的参考,但它们肯定比当前屏幕大小的限制要小。
Windows 可以跨越多个(垂直)排列的屏幕或重叠菜单栏和 Dock。
【讨论】: