У меня есть NSPopupButton внутри NSToolbar
, у которого есть borderder = false
, у которого есть некоторая смесь цвета при выделении. Если я использую bordered = true
, изображение рисуется с хорошим темным наложением.
Я пытаюсь добиться рисования выделенного состояния так же, как это происходит в bordered=true
PS: NSButtonCell с bordered = false
работает из коробки.
Я могу добиться такого поведения, имея bordered = true
и переопределяя drawBezel
и ничего не делая там, но я хочу знать
То, что я пробовал:
- подсветкаBy
- interiorBackgroundStyle
- setCellAttribute
-
class ToolbarPopUpButtonCell : NSPopUpButtonCell {
override var isHighlighted: Bool {
get { return true }
set { super.isHighlighted = newValue }
}
override func drawImage(withFrame cellFrame: NSRect, in controlView: NSView) {
super.drawImage(withFrame: cellFrame, in: controlView)
}
//used in case bordered = true so we do nothing
override func drawBezel(withFrame frame: NSRect, in controlView: NSView) {
}
//doesn't work
override var interiorBackgroundStyle: NSView.BackgroundStyle
{
return .raised
}
}
class ToolbarPopUpButton: NSPopUpButton {
override func awakeFromNib() {
cell?.setCellAttribute(.cellLightsByBackground, to: 1)
}
override var intrinsicContentSize: NSSize {
return NSMakeSize(32 + 5, 32)
}
}
Обратите внимание на изображение справа, которое работает для bordered = false
(NSButtonCell
)