2

我正在尝试在 Cocoa 中创建时间线控件。这就是我想要达到的目标。它基本上是一个标准的时间线设计。

但是,我不知道该采取哪种方法。问题在于顶部标尺、左侧轨道列表和底部音频波形显示。这三个部分需要始终可见并“粘”在边缘。标尺和音频波形只能水平滚动,而左侧的轨道列表只能垂直滚动。

对于顶级标尺,NSRulerView 似乎很合适,因为它只是一个标尺。

对于左视图和底视图,我不知道该走哪条路线。我已经使用宽垂直 NSRulerView 作为曲目列表。这可行,但会产生额外的问题。例如:顶部标尺出现在曲目列表上方。

到目前为止,我已经编写了四个选项:

  1. 忘记 NSRulerView 并在文档视图中绘制所有自定义内容。这似乎可行,但在 NSRulerView 函数中构建了回避。另外,我需要找到一种方法来缩短滚动条,这样它们就不会与侧视图和顶视图重叠。

  2. 将 NSRulerViews 用于顶部和左侧。然后可能会在文档视图中手动绘制底部。

  3. 将左视图放在滚动视图之外,并通过将其链接到主滚动视图来手动上下滚动。顶部使用 NSRulerView,在文档视图中手动绘制音频波形。

  4. 嵌入在另一个 NSScrollView 中的 NSScrollView。外部处理水平滚动,内部滚动视图处理垂直滚动。我认为可能,但它似乎很hacky。

所以我的问题归结为:走哪条路?任何人都可以阐明这个问题并指出我正确的方向吗?

4

1 回答 1

4

我的理解:

  • 您想要一个 NSScrollView 左侧的视图,该视图与 NSScrollView 一起垂直滚动,同时忽略水平滚动。

  • 你想要一个 NSScrollView 下面的视图,它与 NSScrollView 一起水平滚动,同时忽略垂直滚动。

  • 你想要统治者。

要完成此任务:

  • 使用 3 个不重叠且不相互继承的独立滚动视图。

  • 在您希望它们出现的任何视图中激活标尺。

  • 同步滚动视图(这样当一个滚动时,另一个相应地滚动)。

如何同步滚动视图在帮助中。请参阅用户体验 > 控件 > Mac 的滚动视图编程指南 > 同步滚动视图。这也间接链接在 NSScrollView 的帮助指南的标题中。

如果您希望三个滚动视图包含在 NSSplitView 中以简化调整大小,则必须添加第四个视图以使用未使用的角(放置控件的好地方)。由于 NSSplitView 只能垂直或水平拆分,因此您必须创建一个包含 2 个拆分视图的 NSSplitView,其中每个拆分视图包含您实际看到的 2 个视图(沿一个方向拆分,然后沿另一个方向拆分)。拆分视图的大小调整必须以类似于滚动同步的方式同步,以保持所有四个视图的直线交叉。

于 2012-09-15T16:34:45.227 回答