0

私は内部に 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)で機能する右側の画像に注意してください。

ここに画像の説明を入力

4

1 に答える 1