繁体   English   中英

如何在NSDocument的窗口标题栏中隐藏文件图标

[英]How to hide file icon in window titlebar of NSDocument

有谁知道如何在基于文档的应用程序窗口的标题栏中隐藏小图标?

NSWindow的文档说:

要自定义文档图标,可以使用以下代码段:

[[window standardWindowButton:NSWindowDocumentIconButton] setImage:nil];

但这不起作用,因为window:stardardWindowButton:NSWindowDocumentIconButton返回nil,根据文档,这意味着该按钮不在窗口的视图层次结构中。

我环顾了NSDocument,但是似乎没有在任何地方引用该图标。

我还尝试了如何显示不带图标的文档窗口标题中的所有答案 ,但它们不起作用。 我猜小牛队发生了一些变化。

另一种方法是重写NSWindowstandardWindowButton:forStyleMask:类函数,并为要删除的按钮返回nil

class Window: NSWindow {

    class var undesiredButtons: [NSWindowButton] { 
        return [.DocumentIconButton, .DocumentVersionsButton]
    }

    override class func standardWindowButton(button: NSWindowButton, forStyleMask: Int) -> NSButton? {
        if contains(undesiredButtons, button) { return nil }
        return super.standardWindowButton(button, forStyleMask: forStyleMask)
    }
}

事实证明,标题栏中的文件图标是NSThemeDocumentButton按钮。 奇怪的是,在调用windowControllerDidLoadNib时,它不存在,但确实存在“稍后”。 因此,我在代码和bam中添加了一些延迟,就在这里。

这是我在windowControllerDidLoadNib中输入的内容:

dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC));
dispatch_after(delayTime, dispatch_get_main_queue(), ^(void){
    NSWindow *window = self.windowForSheet;
    [[window standardWindowButton:NSWindowDocumentIconButton] setImage:nil];
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM