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