Swift 标题栏按钮的快速设计
我目前正在使用XCode 12.3和Swift 5开发Swift/Cocoa应用程序 我想操纵一个窗口标题栏中关闭按钮的设计 我已经尝试使用Swift 标题栏按钮的快速设计,swift,xcode,cocoa,nswindow,titlebar,Swift,Xcode,Cocoa,Nswindow,Titlebar,我目前正在使用XCode 12.3和Swift 5开发Swift/Cocoa应用程序 我想操纵一个窗口标题栏中关闭按钮的设计 我已经尝试使用 self.window?.standardWindowButton(.closeButton)?.layer. ... = ... 但这种方法似乎不起作用——至少对我来说是这样。您对如何使之成为可能有什么想法吗?您需要将wantsLayer设置为true。标准窗口按钮是常规的NSButtons,内部带有NSCell。要自定义图层,而不让原始按钮阻止视图,
self.window?.standardWindowButton(.closeButton)?.layer. ... = ...
但这种方法似乎不起作用——至少对我来说是这样。您对如何使之成为可能有什么想法吗?您需要将
wantsLayer
设置为true
。标准窗口按钮是常规的NSButton
s,内部带有NSCell
。要自定义图层,而不让原始按钮阻止视图,您需要删除单元格并使用图层,或者只创建一个自定义图层
请注意,当删除或设置您自己的按钮单元时,其操作选择器将重置,因此您需要确保按钮仍能执行您希望它们执行的操作
下面是目标C中的代码,但它应该很容易翻译成Swift:
NSButton *button = [self standardWindowButton:NSWindowCloseButton];
button.wantsLayer = YES;
button.layer.backgroundColor = NSColor.greenColor.CGColor;
NSCell *cell = [[NSCell alloc] initTextCell:@"?"];
[button setCell:cell];
结果:非常感谢您的回答!这完全是我想要的。我已经发现我必须将WantLayer设置为true,但我不知道这些按钮中有一个NSCell。