使用圆形按钮更改NSButton的背景

时间:2018-01-23 13:28:01

标签: swift macos cocoa nsbutton

我正在尝试为NSButton做一些基本样式,我正在改变背景颜色。然而,似乎背景颜色覆盖在我的圆角上。

如何更改圆形按钮的按钮背景颜色?

添加背景之前 enter image description here

添加背景后: enter image description here

代码:

 testButton.title = "Start Test"
 testButton.state = .off
 testButton.image = #imageLiteral(resourceName: "stopwatch_Start")
 testButton.isBordered = false
 testButton.wantsLayer = true
 testButton.layer?.backgroundColor = NSColor.gray.cgColor
 testButton.isEnabled = true

编辑: 我发现如果我添加了以下内容,我可以再次将矩形剪辑变成圆形:

testButton.layer?.masksToBounds = false
testButton.layer?.cornerRadius = 20
然而,当我改变按钮背景时,我需要重做角落放射线似乎很奇怪

1 个答案:

答案 0 :(得分:1)

您已将按钮图层(即矩形)设置为具有背景颜色。该背景填充整个图层,这是一个矩形。因此,完全可以预期它会像这样填充它。

所以是的,您想要的是设置cornerRadius以获得圆角,但不是,您不需要关闭masksToBounds。这样做会让内容外部显示按钮的界限。这几乎肯定不是你想要的。

请注意,通常您可以修改按钮的图层,但最终可能会遇到一些限制。与UIKit不同,AppKit是在Core Animation层存在之前的几十年设计的,因此它仍然主要基于NSCell实现,并且层控制的控件变体在修改层时将具有不同的(未记录的)灵活性。

如果你想要完全控制,建议创建一个NSButton子类,它具有层托管,而不是图层支持,你可以完全控制按钮的外观。