NSWindow主要用于管理應(yīng)用的窗口恍涂,有點(diǎn)類似于一個(gè)容器淫僻。相對(duì)于iOS此虑,MacOS中Window比較復(fù)雜弃鸦。
在NSViewController的viewDidLoad中我們是無(wú)法獲取到window對(duì)象的,和iOS中不同的是,MacOS中裂七,會(huì)在view初始化后再初始化window皆看。下面列出一下window的常用屬性
// 設(shè)置窗口標(biāo)題
window!.title = "啦啦啦"
// 隱藏title bar
// window?.titlebarAppearsTransparent = true
// window?.titleVisibility = .hidden
// 設(shè)置標(biāo)題欄圖標(biāo) ???
// window?.standardWindowButton(.documentIconButton)?.image = (NSImage.init(named: NSImage.Name(rawValue: "lightning")))
// 設(shè)置窗口陰影
window?.hasShadow = true
// 設(shè)置window背景色
window!.backgroundColor = NSColor.yellow
// 獲取左上角按鈕 并做相關(guān)設(shè)置
/**
只能做是否隱藏之類的操作,其他修改似乎得不到想要的效果
*/
// let closeBtn = window.standardWindowButton(.closeButton)
// closeBtn.isHidden = true
// closeBtn?.image = NSImage.init(named: NSImage.Name.advanced)
// 設(shè)置窗口級(jí)別 同級(jí)別窗口則后打開的窗口顯示在前
// window.level = NSWindow.Level(rawValue: NSWindow.Level.RawValue(CGWindowLevelForKey(.maximumWindow)))
// 窗口是否可以通過(guò)點(diǎn)擊背景移動(dòng)
window!.isMovableByWindowBackground = true
// 窗口全屏/退出全屏
// window.toggleFullScreen(window)
// 狀態(tài)了是否透明
// window!.titlebarAppearsTransparent = true
// 設(shè)置角標(biāo) 只有窗口在最小化時(shí)才會(huì)顯示
// DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 5) {
// window.dockTile.badgeLabel = "666"
// }
// borderless // 沒(méi)有頂部titilebar邊框
// titled // 有頂部titilebar邊框
// closable // 帶有關(guān)閉按鈕
// miniaturizable // 帶有最小化按鈕
// resizable // 恢復(fù)按鈕
// texturedBackground // 帶紋理背景的window
// unifiedTitleAndToolbar// 標(biāo)題欄和toolBar 下有統(tǒng)一的分割線
// fullScreen // 全屏顯示
// fullSizeContentView // contentView會(huì)充滿整個(gè)窗口
/* 下面樣式只適用于NSPanel及其子類 */
// utilityWindow
// docModalWindow
// nonactivatingPanel
// hudWindow //用于頭部顯示的panel
window?.styleMask = [.titled, .hudWindow] // 窗口樣式
// retained // 兼容老系統(tǒng)參數(shù),基本很少用到
// nonretained // 不緩存直接繪制
// buffered // 緩存繪制
// window?.backingType = NSWindow.BackingStoreType.buffered // 緩存模式
NSWindowController
看到NSWindowController的名字就很好理解背零,這是一個(gè)管理Window的控制器腰吟,其中包括了一些Window生命周期等等的方法。我一般把對(duì)window的初始化操作放在這個(gè)類的對(duì)象中徙瓶。