【问题标题】:Changing background of NSButton with rounded buttons使用圆形按钮更改 NSButton 的背景
【发布时间】:2018-01-23 13:28:00
【问题描述】:

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

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

添加背景之前

添加背景后:

代码:

 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

但是,当我更改按钮背景时,我需要重做角半径,这似乎很奇怪

【问题讨论】:

    标签: swift macos cocoa nsbutton


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-11-05
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多