Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 标题栏按钮的快速设计_Swift_Xcode_Cocoa_Nswindow_Titlebar - Fatal编程技术网

Swift 标题栏按钮的快速设计

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。要自定义图层,而不让原始按钮阻止视图,

我目前正在使用XCode 12.3和Swift 5开发Swift/Cocoa应用程序

我想操纵一个窗口标题栏中关闭按钮的设计

我已经尝试使用

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。