【问题标题】:OSX maximum window heightOSX 最大窗口高度
【发布时间】:2014-05-21 09:35:46
【问题描述】:

在 OSX 上,窗口只能是特定高度。它认为这个最大高度是:屏幕高度 - 菜单栏高度 - 标题栏高度 - 停靠高度(仅当它可见时)。

是否有一种简单的方法可以获取此值,或者您如何单独获取这些值?这是正确的吗?

【问题讨论】:

    标签: macos user-interface window titlebar dock


    【解决方案1】:
    【解决方案2】:

    参见 NSScreen visibleFrame 和屏幕 注册并办理 NSApplicationDidChangeScreenParametersNotification

    人们使用多个显示器、外部显示器并更改他们的显示偏好。

    您还需要决定如何处理 Dock。

    当一个窗口跨越多个显示器时,您还需要计算高度。 或者,如果它应该是最大尺寸。

    您需要考虑窗口恢复处理。

    您最好考虑处理睡眠和唤醒通知。

    最后,您需要仔细测试。这并不难,但是您自己的设置可能无法反映许多动态。

    还有一个。请记住,即使 Dock 隐藏(左右或底部),操作系统也会尝试为 Dock 边缘保留一个小空间,NSScreen 方法可以解决此问题。如果我没记错的话,在小牛队似乎是 4 分。 当您的应用程序处于活动状态且位于前端时,您可以使您的应用程序在 Dock 不可用的情况下运行。但是通过 API 强制执行此操作也会隐藏 menuBar。如果你需要这样做,要么做全屏,要么考虑增加很多窗口级别。 (这并不像听起来那么有价值,但探索起来很有趣)

    最后,这些内容有时会在主要操作系统版本中发生变化。因此,您可能需要适应不同的操作系统版本。

    【讨论】:

      【解决方案3】:

      在 OS X 上,窗口只能是特定高度。

      我找不到关于窗口大小限制的参考,但它们肯定比当前屏幕大小的限制要小。

      Windows 可以跨越多个(垂直)排列的屏幕或重叠菜单栏和 Dock。

      【讨论】:

      • 好点。可以将窗口级别设置为高于停靠栏和菜单栏,但通常不太实用。
      • 两台显示器,一台在另一台之上。您需要与两个显示器一样高的窗口。
      • 没有记录的最大值,但我们可以假设它是 CGFloat 的高度或宽度范围,以屏幕坐标中的点为单位,而不是以像素为单位
      猜你喜欢
      • 2018-12-11
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多