【发布时间】:2011-10-31 12:11:14
【问题描述】:
我的 Cocoa 应用程序收集需要在时间轴中显示的事件(NSManagedObject 的实例)。我最初的方法是使用现有的基于 Javascript 的小部件(我尝试使用 Simile Timeline 和 Timeglider)并使用 WebView 控件显示时间线。这原则上可行,但不幸的是,这两个小部件都不能很好地处理 BC 日期,这是我的应用程序的一个重要要求。
我的应用中的事件的日期范围从公元前 500.000 到最近的日期。事件日期仅以年份表示。它们的日、月和时间属性无关紧要。
放弃 Javascript 方法后,我仍然可以选择使用自定义 Cocoa 控件显示时间线。由于我发现没有合适的,我将不得不自己开发。
这将是我的第一个自定义 Cocoa 控件,经过一段时间的思考,我想出了以下粗略的设计:
我需要一个自定义控件来呈现实际的时间线。此控件可能基于 NSView。此控件应根据时间线上的刻度线数量乘以每个标记之间的宽度(像素)来计算其大小。例如,时间线由世纪组成,每个世纪 100 像素宽。公元前 10.000 年和公元前 5.000 年之间的事件时间线将是 5000 像素宽(10000 - 5000 = 5000 年,等于 50 个世纪)。
我需要一个 ScrollView 来包装时间线以使其支持滚动行为。只需要水平滚动。
我需要一些东西来代表一个实际的事件。我正在考虑为此使用现有的控件,可能是标准的圆形按钮和包装在一起作为单个控件的标签。
我需要一个自定义控件来在时间线上呈现刻度线。
将此作为我在 Cocoa 中的时间线组件的基本设计,这样会有效还是我完全没有抓住重点?
【问题讨论】:
-
罗杰,你有没有做到这一点?我遵循了类似的时间表(仅涵盖 24 小时)。
-
@Darren 是的,我做到了。效果很好。我刚刚完成了对初始设计的重大重构。
-
@Roger 你有 iPhone 的示例代码吗?我有类似的要求??
标签: cocoa custom-controls timeline