【问题标题】:Detect MacBook notch in macOS Monterey and higher在 macOS Monterey 及更高版本中检测 MacBook 缺口
【发布时间】:2021-12-09 13:59:47
【问题描述】:

这是 macOS 的问题,而不是 iOS。

MacBook pro 2021 上的 macOS Monterey 首次提供了一个缺口,当处于全屏模式或最大化状态时,它会隐藏部分菜单。为了在这种情况下应用修改后的菜单,我想以编程方式检测缺口。

我该怎么做?在文档中找不到任何内容。

【问题讨论】:

    标签: swift objective-c macos


    【解决方案1】:

    首先,检查您是否在 macOS 12 或更高版本上运行,因为 API 仅在 macOS 12 或更高版本上可用。可以使用if #available(macOS 12, *)查看。

    然后,对于感兴趣的NSScreen,检查这些属性之一。他们也应该给出相同的(是/否)答案:

    例如:

    extension NSScreen {
        var hasTopNotchDesign: Bool {
            guard #available(macOS 12, *) else { return false }
            return safeAreaInsets.top != 0
        }
    }
    

    【讨论】:

    • 如果有缺口怎么办?我怎么知道缺口是否覆盖了我的菜单之一,我该怎么办?
    • OP 说“为了在这种情况下应用修改后的菜单”。也许他正在编写游戏或其他高度自定义的全屏应用程序,并在其中绘制自己的菜单栏。
    • 无论如何,这是一个合理的问题。如果 Apple 不希望我们能够围绕缺口进行设计,他们就不会提供 API 来定位它。
    • 嘿,放轻松,我没有否决这个问题。我在问一个合理的问题。我对这个缺口感到不安,我想了解它是否会破坏我的应用程序。
    • 谢谢@rob。如果我理解正确,这些属性会返回可用的左/右矩形,并且使用这些信息我可以重新排列我的(实际上是自定义的)菜单。伟大的!我将在 11 月初收到新的 MacBook Pro 后对其进行测试,并随时为您更新。
    猜你喜欢
    • 2020-01-06
    • 2013-06-11
    • 2017-10-17
    • 2023-03-03
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多