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