簡體   English   中英

側邊欄中的 Big Sur 工具欄項目

[英]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 的視頻添加它...

帶有位於工具欄中的自定義工具欄項目的界面生成器。該項目在屬性檢查器中設置了標識符 NSToolbarSidebarTrackingSeparatorItemIdentifier

低,看: 在此處輸入圖像描述

暫無
暫無

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

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