MacOS学习(三) NSWindow

作者: 咸鱼永动机 | 来源:发表于2018-01-02 13:34 被阅读0次

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的初始化操作放在这个类的对象中。

相关文章

网友评论

    本文标题:MacOS学习(三) NSWindow

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