У меня есть NSPopupButton внутри NSToolbar
, у которого есть borderder = false
, у которого есть некоторая смесь цветов при выделении. Если я использую bordered = true
, изображение рисуется с красивым темным наложением.
Я пытаюсь добиться того, чтобы рисовать выделенное состояние так же, как в bordered=true
PS: NSButtonCell с bordered = false
работает из коробки.
Я могу добиться такого поведения, имея bordered = true
и переопределив drawBezel
, и ничего там не делать, но я хочу знать
Что я пробовал:
- основные моментыПо
- интерьерФонСтиль
- 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
)