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)
网友评论