简体   繁体   中英

NSButton set background color macOS 10.12

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.

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!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM