NSButton устанавливает цвет фона macOS 10.12

Я имею NSButtons созданный в раскадровке, для которого я хотел бы изменить цвет фона. Я искал SO и Google, но на самом деле ни одно из решений не работает в моем проекте или даже в простом тестовом проекте. Я пробовал:

  1. Настройка button.layer.backgroundColor (в том числе с импортом QuartzCore и без него и настройка wantsLayer).
  2. Получение NSButtonCell из NSButton и изменение цвета фона. Я пробовал это с рамкой, без рамки, прозрачным и т. Д. Без изменения цвета фона. Я пытался перейти от квадрата к градиенту, не повезло.

1 ответ

Это должно быть ошибка в macOS. Я могу заставить NSButtonCell отвечать на backgroundColor просто путем создания подкласса с классом EMPTY с одним переопределением EMPTY:

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

При использовании этого подкласса все работает как положено!

Другие вопросы по тегам