簡體   English   中英

在NSOutlineView中添加/刪除按鈕

[英]Add / Remove buttons in NSOutlineView

我有一個Source-View( NSOutlineView ),底部有兩個按鈕。 我添加了一個NSBox以便當它們位於按鈕后面時,這些項目不會“閃耀”。

當窗口處於活動狀態時,此工作正常:

在此輸入圖像描述

但是一旦我停用窗口, NSBox仍然具有該活動顏色,而不是與NSOutlineView的背景顏色匹配的暗灰色版本:

在此輸入圖像描述

如何確保這兩種顏色始終匹配。 使用特定顏色也是一種黑客攻擊,因為NSOutline使用的顏色可能會在某些時候發生變化。

更新 :Apple的Mail.app以及Things似乎都有解決該問題的方法。 : - /

@Neha讓我找到解決方案的正確方法。

我用Ruby寫它是因為我使用Rubymotion但它很容易翻譯:)

假設您有一個NSBox的box插座,您可以在窗口失去焦點時將其設置為透明,並在它成為關鍵窗口時使用相應的委托方法執行相反的操作:

  def windowDidBecomeKey(notification)
    box.setTransparent(false)
  end

  def windowDidResignKey(notification)
    box.setTransparent(true)
  end

結果看起來很好:

在此輸入圖像描述

沒有它:

在此輸入圖像描述

解決方案是保持對NSOutlineView的backgroundColor屬性的引用,因為它是一個特殊的NSColor ,它根據父窗口的鍵狀態動態變化。 將自定義視圖的顏色設置為該引用的顏色。 當窗口失去/獲得密鑰狀態時,在自定義視圖上調用setNeedsDisplay:以使用新顏色重繪它。 使用KVO觀察NSWindowDidBecomeKeyNotificationNSWindowDidResignKeyNotification 請注意,指向顏色的指針保持不變,但引用所代表的實際顏色會發生變化。 這里解釋解決方案。

NSBox的屬性檢查器中,將display設置為transparent

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM