首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初学者坚持使用NSScreen.screens的问题

初学者坚持使用NSScreen.screens的问题
EN

Stack Overflow用户
提问于 2021-02-10 13:07:52
回答 1查看 168关注 0票数 0

我是swift的初学者,我在为自己做一个项目的同时也在学习。现在,我正在尝试创建一个"kiosk模式“窗口,当菜单栏和dock被隐藏时,它会最大化地填满整个屏幕,这样应用程序就不能退出(顺便说一下,这是一个拖延症应用程序)。然而,在一切正常后,我遇到了一个问题,因为菜单栏占用的空间现在有一个我需要填充的空白(see pic)。因为这个间隙,用户能够点击这个间隙并退出应用程序,这是我试图阻止的。我已经在这里做了很多搜索,但我找不到解决方案,我真的很感激能得到任何帮助。

注意:我正在使用Swift 4.1和Xcode 9.4.1

代码语言:javascript
复制
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)

    }

}
EN

回答 1

Stack Overflow用户

发布于 2021-02-12 00:23:22

windowDidLoad函数的改进版本如下所示:

代码语言:javascript
复制
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替换你的演示选项,这样你就不必隐藏菜单栏和所有那些东西了,但你也不必这样做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66131197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档