我是swift的初学者,我在为自己做一个项目的同时也在学习。现在,我正在尝试创建一个"kiosk模式“窗口,当菜单栏和dock被隐藏时,它会最大化地填满整个屏幕,这样应用程序就不能退出(顺便说一下,这是一个拖延症应用程序)。然而,在一切正常后,我遇到了一个问题,因为菜单栏占用的空间现在有一个我需要填充的空白(see pic)。因为这个间隙,用户能够点击这个间隙并退出应用程序,这是我试图阻止的。我已经在这里做了很多搜索,但我找不到解决方案,我真的很感激能得到任何帮助。
注意:我正在使用Swift 4.1和Xcode 9.4.1
import Cocoa
typealias NSRect = CGRect
class MainWindowController: NSWindowController {
convenience init() {
self.init(windowNibName: NSNib.Name(rawValue: "MainWindowController"))
}
override func windowDidLoad() {
super.windowDidLoad()
NSMenu.setMenuBarVisible(false)
NSApp.presentationOptions = [.hideDock, .hideMenuBar, .disableForceQuit, .disableProcessSwitching,.autoHideToolbar]
window?.backgroundColor = NSColor(red: 1, green: 0, blue: 0, alpha: 0.754)
window?.isOpaque = false
window?.setFrame(NSScreen.screens[0].frame, display: true, animate: false)
window?.styleMask.remove(.titled)
}
}发布于 2021-02-12 00:23:22
windowDidLoad函数的改进版本如下所示:
override func windowDidLoad() {
super.windowDidLoad()
NSMenu.setMenuBarVisible(false)
NSApp.presentationOptions = [.hideDock, .hideMenuBar, .disableForceQuit, .disableProcessSwitching]
window?.backgroundColor = NSColor(red: 1, green: 0, blue: 0, alpha: 0.754)
window?.isOpaque = false
window?.styleMask.remove(.titled)
window?.setFrame(NSScreen.screens[0].frame, display: true, animate: false)
}在设置框架之前,您需要删除窗口标题栏,因为标题栏在隐藏之前一直存在。此外,您可能不需要自动隐藏工具栏。
我会用window?.level = .mainMenu + 1替换你的演示选项,这样你就不必隐藏菜单栏和所有那些东西了,但你也不必这样做。
https://stackoverflow.com/questions/66131197
复制相似问题