2016-09-20 37 views
0

我想要一個帶有隱藏標題的窗口,如Safari或Xcode中所示,但使用標題欄附件視圖而不是工具欄(我想要比工具欄提供更多的控件排列和內容)。這是可行的嗎?帶附件視圖的隱藏窗口標題

我還沒有完全做到這一點。如果我將窗口的titleVisibility設置爲hidden,並且我的附件視圖的layoutAttributebottom,則除標準關閉/最小/縮放按鈕外,標題區域爲空,並且我的附件視圖將顯示在該窗口的下方。

如果我將layoutAttribute更改爲right,那麼我的附件視圖會出現在標準按鈕的右側,但是由於標題欄不夠高而導致底部被切斷,並且視圖也不會不要在窗口水平調整大小。

有沒有辦法讓這項工作?或者我必須使用工具欄?

更新:我用Xcode的可視化調試器來檢查Xcode自己的標題欄,並發現它使用的是一個工具欄。調試器拒絕附加到Safari,所以我仍然想知道它如何做新的標籤按鈕。我想象那個按鈕是一個右固定的輔助視圖,其餘的是一個普通的工具欄。 Safari的工具欄仍然可以自定義,所以看起來很可能。

回答

0

我決定繼續使用工具欄,它工作得很好。

  • 我拿了我的NSTitleBarAccessoryController子類,並使其繼承自NSViewController
  • 我爲我的窗口創建了一個非可自定義的工具欄,在允許的和默認的集合中都有一個「Image Toolbar Item」。
  • 工具欄項目的高度爲32,最大寬度爲10000,因此它可以伸展以填充標題欄。
  • 在我的工具欄委託,在toolbarWillAddItem:,我從筆尖實例化視圖控制器,並將其視圖放入該項目。
  • 實際上是新窗口標題的文本標籤將其value綁定到窗口的title
  • 以匹配Xcode的標題欄中的間距,使用1個像素(零將切斷的邊緣)和5.
  • window.titleVisibility = .hidden頂裕度的左和右緣工具欄移動到標題區域。
+0

我最終得出的結論是,工具欄的方法是蘋果公司爲主標題欄內容設計的,而附件視圖則是用於額外的東西。 – Uncommon