在Big Sur中,Xcode和Calendar的工具栏项在打开时保留在侧边栏上,但是在折叠边栏时仍在左侧可见。
在“采用Mac系统的新面貌”,在13点55分,约翰说:“摆在分离器之前的项目[sidebarTrackingSeparator]会出现在全高边栏”,只是因为他们是在Xcode和日历。我还无法完成这项工作。
这是一个演示该问题的示例项目。我使用了IB定义的“带有边栏的窗口控制器”,并添加了一个工具栏项来切换边栏。我.sidebarTrackingSeparator
在NSWindowController的子类中插入以下.toggleSidebar
项目:
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会话之外,我还没有看到有关实现此工具栏设计的任何讨论。有人能使它正常工作吗?
这是IB /代码定时不一致。在添加.sidebarTrackingSeparator
工具栏项目之前,Interface Builder会配置并安装工具栏。
因此,您做对了事,为时已晚。太后来与调度。我认为重要的是在窗口上设置工具栏之前,先在其中放置项目。
不幸的是,使用IB实际上是不可能的,除非我相信,否则您将创建一个全新的工具栏并重新分配它。但这是一个坏主意,因为这样您可能会遇到自动保存工具栏状态的麻烦。
诀窍是在Interface Builder中配置分隔符。如果您查看ObjC文档中的该常量,则会看到一个更长的名称:NSToolbarSidebarTrackingSeparatorItemIdentifier
。
我们在这里能做的最好的就是希望符号的名称与标识符的值相同。如果您真的想验证这一点,则可以在调试器中打印符号的值:
(lldb) po NSToolbarSidebarTrackingSeparatorItemIdentifier
NSToolbarSidebarTrackingSeparatorItemIdentifier
如果我们在IB中创建一个自定义工具栏项,然后根据John的视频进行添加...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句