swift 如何使用周围地区的MacBook的缺口在全屏?

h79rfbju  于 2023-01-04  发布在  Swift
关注(0)|答案(2)|浏览(150)

当应用程序处于全屏模式时,我需要使用缺口周围(和后面)的区域,“完全全屏”显示我的应用程序,并使用该区域显示元素,就好像那里没有缺口一样。
我知道这是菜单栏出现的地方,但我可以要么禁用菜单栏在全屏或使它的行为像旧的mac时,它会出现在超过应用程序后,我们移动光标在该地区更高。
我试过了(没有用):

  • 玩安全区
  • 在Xcode中隐藏检查菜单中的标题栏
  • 完全删除菜单
  • 将UI支持真实屏幕大小在Mac上=真实添加到列表中

我已经在谷歌和SO以及苹果的文档上搜索了几个小时,但还没有找到任何如何实现这一目标的迹象。

e4eetjau

e4eetjau1#

我不认为你可以使用全屏模式来实现这一点,因为没有公共API来覆盖你的窗口的全屏框架,以包括传感器 shell 周围的不安全区域(“缺口”)。
你应该可以通过查看NSScreen来手动实现这一点。将窗口的frame设置为屏幕的frame而不是屏幕的visibleFrame)。屏幕的auxiliaryTopLeftAreaauxiliaryTopRightArea描述了凹口左右的区域。从这些,你可以推断出被凹口遮挡的区域。

acruukt9

acruukt92#

这是我如何设法做到这一点(简化仅供参考):
1.隐藏应用程序的"标题栏"
1.将窗框设置为全宽和全高(再次简化)

override func windowDidLoad() {
    window!.setFrame(CGRect(x: 0, y: 0, width: NSScreen.main!.frame.width, height: NSScreen.main!.frame.height), display: true)
}

1.在您的plist中设置LSUIPresentationMode

<key>LSUIPresentationMode</key>
<integer>3</integer> // Change this to 4 if you want to allow menu bar and dock to appear when user moves cursor top/bottom edges (they are initially hidden)
    • 注:**

如果不使用LSUIPresentationMode,甚至不隐藏标题栏,以下代码将以全屏模式启动应用程序,并在约1秒内填充notch周围的区域,但随后将恢复到notch下方的区域。
我想我也应该提到这一点,所以可能有办法实现这一点,而使用本机全屏

window!.toggleFullScreen(self)
window!.setFrame(CGRect(x: 0, y: 0, width: 1728, height: 1117), display: true)

相关问题