[英]How to hide file icon in window titlebar of NSDocument
有谁知道如何在基于文档的应用程序窗口的标题栏中隐藏小图标?
NSWindow的文档说:
要自定义文档图标,可以使用以下代码段:
[[window standardWindowButton:NSWindowDocumentIconButton] setImage:nil];
但这不起作用,因为window:stardardWindowButton:NSWindowDocumentIconButton返回nil,根据文档,这意味着该按钮不在窗口的视图层次结构中。
我环顾了NSDocument,但是似乎没有在任何地方引用该图标。
我还尝试了如何显示不带图标的文档窗口标题中的所有答案? ,但它们不起作用。 我猜小牛队发生了一些变化。
另一种方法是重写NSWindow
的standardWindowButton: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.