我想要一个看起来或多或少像 Tweetie 中的消息列表的视图(见截图)(不,它不会是 Twitter 客户端,尽管它很相似;)。我不确定我应该为此使用什么 Cocoa 视图...我最近主要为 iPhone 编写东西,那里只有一个这样的控件(UITableView),但在 AppKit 中有几个。我应该使用 NSTableView 还是 NSCollectionView,还是在这里更合适?
2 回答
NSTableView 非常适合一般的垂直列表。不过,Tweetie 看起来可能只是在使用自定义的东西。没有一个标准的 Cocoa 类看起来像那样。
更新:我将使用 SDListView - 它较新,似乎得到维护(它是 Steven Degutis 的“TheGist”Twitter 客户端的一部分),并且该客户端中使用的版本看起来几乎与 Tweetie 中的版本相同,我有点无论如何都想撕掉...
更新 2(2014 年):从 10.7 开始,可以在 NSTableView 中使用 NSView,因此整个答案已经过时。对于任何类似 UITableView 的列表,您现在应该只使用基于视图的 NSTableViews 就可以了。
--
好的,我会回答自己:根据这篇博文,我可以使用 NSTableView,但这不是一个好主意......:
对于 Mac,你有 NSTableView,这是一个过时的组件,由于各种历史和性能相关的原因,它使用 NSCell 对象而不是 NSViews。NSCells 很难定制,并且不能包含 NSView 对象(不跳过箍并引入不必要的复杂性),这是交互式、引人入胜的界面的命脉。NSCell内的文本范围内的可点击超链接?祝你好运!悬停效果和核心动画流畅度?对对!NSCell 就像一个海市蜃楼:从远处看还不错,但一旦你近距离接触它,你会希望一开始就没有看到它。
我认为 Mac 上的每个原生 Twitter 应用程序目前都为他们的时间线做了一些不同的事情。Loren Brichter 基本上编写了一个 UITableView 端口来制作 Tweetie 的时间线,而 Steven Degutis 最近一直在为他的 Twitter 应用程序开发基于 NSCollectionView 的时间线。新的 Echofon beta 时间线与完全自定义的文本和布局管理器完全不同,它允许对链接产生悬停效果,就好像它是一个 WebView。至于 Beak,我不会在这篇文章中详细介绍,但我只会说它是一个完全自定义的 NSScrollView,在后台有一些花哨的缓存。
我想我会尝试找到某种专门为此目的制作的自定义开源控件......我正在考虑来自 http://www.harmless.de/cocoa-code.php 的 AMCollectionView 和来自http://www.harmless.de/cocoa-code.php的SDListView /github.com/sdegutis/SDListView。