我刚开始在Mac上进行开发,并希望实现类似于Spotlight的界面 - 主要部分似乎是一个扩展的表/网格视图。
我想知道Apple是否提供了用于创建此类内容的组件,或者是否可以在其他地方使用开源。
当然,如果不是,我会尝试自己解决问题,但总是值得一试!
提前感谢您的帮助。
答案 0 :(得分:4)
新答案(2015年12月)
这些天我会使用垂直堆栈视图(NSStackView)。
您可以使用其隐藏优先级来保证您显示的结果数量适合(它会隐藏它不能隐藏的结果)。注意,它没有重用像表视图这样的视图重用单元格视图,所以它只适用于你的情况下有限数量的“结果”,特别是因为添加一堆永远不会有的子视图是没有意义的出现。我甚至可以直截了当地说你不应该将它用于你想要滚动的事物列表(在这种情况下,请使用表视图)。
优先级设置可用于确保您对“足够”结果的假设不会导致难看的布局问题,方法是让堆栈视图“牺牲”最后几个。
您甚至可以通过最后添加并将其优先级设置为必需(1000)来模拟Spotlight的“Spotlight首选项”条目(或“全部显示”选项),这样即使其上方的结果条目被隐藏,它也始终保持不变缺乏空间。
最近我10.11(及以后)的所有UI设计都在使用它们重。我一直在寻找新的方法来简化我的布局。鉴于它们的轻量级,它们应该是您首选首选,除非您需要更复杂的东西(Apple工程师在WWDC视频中声明它们的目的是以这种方式使用)。
2011年旧答案
这是私有的Apple API。我不知道任何模仿它的开源计划。
如果我尝试这样做,我可能会使用NSTableView,没有封闭的滚动视图,没有标题,两列,左列中右对齐的浅色文本,右侧的轻松googled图像/文本单元格列,打开垂直网格线。容器视图将观察表视图的帧更改并相应地调整大小/重新定位。
添加:在具有不同扫描路径的语言中查看右/左对齐文本(甚至列的位置)是否不同也是一个好主意。示例:阿拉伯语和希伯来语从右向左阅读。更好地适应而不是说“谁在乎”(他说得很轻松,同时充分了解他自己的应用程序在这类事情上存在问题:-))。您可以通过确保在计算机上安装此类语言,然后在它们之间切换并测试Spotlight来测试这一点。由于语言切换UI不依赖于阅读外语,因此更改语言不应成为问题。 : - )