NSButton set background color macOS 10.12

2019-08-01 03:11发布

I have NSButtons created in Storyboard that I would like to change the background color for. I have searched SO and Google but none of the solutions actually work on my project or even a simple test project. I've tried:

  1. Setting the button.layer.backgroundColor (including with and without importing QuartzCore and setting wantsLayer).
  2. Getting the NSButtonCell from the NSButton and changing the background color. I've tried this with bordered, unbordered, transparent, etc. No change in background color. I've tried changing from square to gradient, no luck.

1条回答
何必那么认真
2楼-- · 2019-08-01 03:48

This must be a bug in macOS. I can make the NSButtonCell respond to backgroundColor simply by subclassing with an EMPTY class with one EMPTY override:

class ColorButtonCell: NSButtonCell {
    override func draw(withFrame cellFrame: NSRect, in controlView: NSView) {
        super.draw(withFrame: cellFrame, in: controlView)
    }
}

When using this subclass, it all works as expected!

查看更多
登录 后发表回答