美文网首页
macos开发 window全屏

macos开发 window全屏

作者: Jesscia_Liu | 来源:发表于2022-06-23 15:49 被阅读0次

1、设置window

import Cocoa

class MainWindow: NSWindow {
    override var canBecomeKey: Bool{
        //当NSTextField在没有Title Bar的window上面时,点击NSTextField它是没有反应的,我们必须在window类方法里面重写这个方法:
        //window?.canBecomeKey
        return true
    }
}

class AppDelegate: NSObject, NSApplicationDelegate {

    var windowController: NSWindowController?
    var window: MainWindow?
    
    func applicationDidFinishLaunching(_ aNotification: Notification) {
       
        window = MainWindow()
        window?.titlebarAppearsTransparent = true;
        window?.titleVisibility = .hidden
        setWindowFull(window)
        window?.contentViewController = NSViewController()
        windowController = NSWindowController(window: window)
        windowController?.showWindow(window)
        
        
    }
    
    func setWindowFull(_ window: MainWindow?) {
        window?.level = .modalPanel
        window?.styleMask = [.borderless, .nonactivatingPanel]
//        window?.isMovableByWindowBackground = true//可移动背景
        window?.collectionBehavior = [.canJoinAllSpaces, .fullScreenPrimary]
        window?.makeKeyAndOrderFront(nil)//使window显示在最前面
        
        //全屏
        let screenFrame = NSScreen.main?.frame ?? NSRect.zero
        window?.setFrame(screenFrame, display: true)
        
        //执行后可隐藏docker
        window?.toggleFullScreen(self)//全屏切换
    }
    
    func applicationWillTerminate(_ aNotification: Notification) {
        // Insert code here to tear down your application
    }

    func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool {
        return true
    }


}
   

2、NSViewController中的loadView需要赋值frame

override func loadView() {
        let myView = NSView()
        view = myView
        view.wantsLayer = true
        view.layer?.backgroundColor = NSColor.white.cgColor
        
        if let frame = NSScreen.main?.frame {
            view.frame = frame
        }
    }

3、关闭全屏退出程序

        window?.close()//退出全屏,若直接exit(0)则会红屏
        exit(0)

相关文章

网友评论

      本文标题:macos开发 window全屏

      本文链接:https://www.haomeiwen.com/subject/eccmvrtx.html