Readymade Cocoa Spotlight UI组件

时间:2011-01-21 13:06:22

标签: cocoa user-interface macos spotlight

我刚开始在Mac上进行开发,并希望实现类似于Spotlight的界面 - 主要部分似乎是一个扩展的表/网格视图。

alt text

我想知道Apple是否提供了用于创建此类内容的组件,或者是否可以在其他地方使用开源。

当然,如果不是,我会尝试自己解决问题,但总是值得一试!

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

新答案(2015年12月)

这些天我会使用垂直堆栈视图(NSStackView)。

您可以使用其隐藏优先级来保证您显示的结果数量适合(它会隐藏它不能隐藏的结果)。注意,它没有重用像表视图这样的视图重用单元格视图,所以它只适用于你的情况下有限数量的“结果”,特别是因为添加一堆永远不会有的子视图是没有意义的出现。我甚至可以直截了当地说你不应该将它用于你想要滚动的事物列表(在这种情况下,请使用表视图)。

优先级设置可用于确保您对“足够”结果的假设不会导致难看的布局问题,方法是让堆栈视图“牺牲”最后几个。

您甚至可以通过最后添加并将其优先级设置为必需(1000)来模拟Spotlight的“Spotlight首选项”条目(或“全部显示”选项),这样即使其上方的结果条目被隐藏,它也始终保持不变缺乏空间。

最近我10.11(及以后)的所有UI设计都在使用它们。我一直在寻找新的方法来简化我的布局。鉴于它们的轻量级,它们应该是您首选首选,除非您需要更复杂的东西(Apple工程师在WWDC视频中声明它们的目的是以这种方式使用)。

2011年旧答案

这是私有的Apple API。我不知道任何模仿它的开源计划。

如果我尝试这样做,我可能会使用NSTableView,没有封闭的滚动视图,没有标题,两列,左列中右对齐的浅色文本,右侧的轻松googled图像/文本单元格列,打开垂直网格线。容器视图将观察表视图的帧更改并相应地调整大小/重新定位。

添加:在具有不同扫描路径的语言中查看右/左对齐文本(甚至列的位置)是否不同也是一个好主意。示例:阿拉伯语和希伯来语从右向左阅读。更好地适应而不是说“谁在乎”(他说得很轻松,同时充分了解他自己的应用程序在这类事情上存在问题:-))。您可以通过确保在计算机上安装此类语言,然后在它们之间切换并测试Spotlight来测试这一点。由于语言切换UI不依赖于阅读外语,因此更改语言不应成为问题。 : - )