NSWindow主要用于管理应用的窗口,有点类似于一个容器。相对于iOS,MacOS中Window比较复杂。
在NSViewController的viewDidLoad中我们是无法获取到window对象的,和iOS中不同的是,MacOS中,会在view初始化后再初始化window。下面列出一下window的常用属性
// 设置窗口标题
window!.title = "啦啦啦"
// 隐藏title bar
// window?.titlebarAppearsTransparent = true
// window?.titleVisibility = .hidden
// 设置标题栏图标 ???
// window?.standardWindowButton(.documentIconButton)?.image = (NSImage.init(named: NSImage.Name(rawValue: "lightning")))
// 设置窗口阴影
window?.hasShadow = true
// 设置window背景色
window!.backgroundColor = NSColor.yellow
// 获取左上角按钮 并做相关设置
/**
只能做是否隐藏之类的操作,其他修改似乎得不到想要的效果
*/
// let closeBtn = window.standardWindowButton(.closeButton)
// closeBtn.isHidden = true
// closeBtn?.image = NSImage.init(named: NSImage.Name.advanced)
// 设置窗口级别 同级别窗口则后打开的窗口显示在前
// window.level = NSWindow.Level(rawValue: NSWindow.Level.RawValue(CGWindowLevelForKey(.maximumWindow)))
// 窗口是否可以通过点击背景移动
window!.isMovableByWindowBackground = true
// 窗口全屏/退出全屏
// window.toggleFullScreen(window)
// 状态了是否透明
// window!.titlebarAppearsTransparent = true
// 设置角标 只有窗口在最小化时才会显示
// DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 5) {
// window.dockTile.badgeLabel = "666"
// }
// borderless // 没有顶部titilebar边框
// titled // 有顶部titilebar边框
// closable // 带有关闭按钮
// miniaturizable // 带有最小化按钮
// resizable // 恢复按钮
// texturedBackground // 带纹理背景的window
// unifiedTitleAndToolbar// 标题栏和toolBar 下有统一的分割线
// fullScreen // 全屏显示
// fullSizeContentView // contentView会充满整个窗口
/* 下面样式只适用于NSPanel及其子类 */
// utilityWindow
// docModalWindow
// nonactivatingPanel
// hudWindow //用于头部显示的panel
window?.styleMask = [.titled, .hudWindow] // 窗口样式
// retained // 兼容老系统参数,基本很少用到
// nonretained // 不缓存直接绘制
// buffered // 缓存绘制
// window?.backingType = NSWindow.BackingStoreType.buffered // 缓存模式
NSWindowController
看到NSWindowController的名字就很好理解,这是一个管理Window的控制器,其中包括了一些Window生命周期等等的方法。我一般把对window的初始化操作放在这个类的对象中。
网友评论