[英]Big Sur Toolbar Items in the Sidebar
在 Big Sur 中,Xcode 和日歷的工具欄項目在打開時停留在側邊欄上方,但在側邊欄折疊時在左側仍然可見。
在 13:55 的“采用 macOS 的新外觀”中,John 說“放置在分隔符 [sidebarTrackingSeparator] 之前的項目將出現在全高側邊欄上”,就像它們在 Xcode 和日歷中一樣。 我無法完成這項工作。
這是一個演示該問題的示例項目。 我使用了 IB 定義的“Window Controller with Sidebar”並添加了一個用於切換側邊欄的工具欄項。 在 NSWindowController 的子類中,我在.toggleSidebar
項之后插入.sidebarTrackingSeparator
:
override func windowDidLoad() {
// Sometimes the toolbar items aren't loaded yet--async is a quick and dirty way to prevent a crash
DispatchQueue.main.async {
self.window?.toolbar?.insertItem(withItemIdentifier: .sidebarTrackingSeparator, at: 1)
}
}
有時這不起作用(切換按鈕保留在側邊欄的右側)。 有時側邊欄切換會放在溢出菜單中:
我還沒有看到任何關於在 WWDC session 之外實現此工具欄設計的討論。 有沒有人能讓這個工作?
這是一個 IB/代碼時序分歧。 Interface Builder 在添加.sidebarTrackingSeparator
工具欄項之前配置和安裝工具欄。
所以你在做正確的事,只是為時已晚。 並且太晚了調度。 我認為重要的是在 window 上設置工具欄之前將項目放入其中。
不幸的是,這對於 IB 來說是不可能的,除非我相信,你創建一個全新的工具欄並重新分配它。 但這是一個壞主意,因為這樣您可能會遇到自動保存工具欄的 state 的麻煩。
訣竅是在 Interface Builder 中配置分隔符。 如果您查看此常量的 ObjC 文檔,您會看到一個更長的名稱: NSToolbarSidebarTrackingSeparatorItemIdentifier
。
我們在這里能做的最好的事情是希望符號的名稱與標識符的值相同。 如果你真的想驗證這一點,你可以在調試器中打印符號的值:
(lldb) po NSToolbarSidebarTrackingSeparatorItemIdentifier
NSToolbarSidebarTrackingSeparatorItemIdentifier
如果我們在 IB 中創建一個自定義工具欄項,並根據 John 的視頻添加它...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.