我正在尝试在Cocoa中创建一个时间轴控件。 This is what I am trying to achieve.这基本上是一个标准的时间表设计。
但是,我不知道采取哪种方法。问题在于顶部标尺,左侧轨道列表和底部音频波形显示。这三个部分需要始终可见并“粘贴”在边缘上。标尺和音频波形只能水平滚动,而左侧的曲目列表只能垂直滚动。
对于顶级标尺,NSRulerView似乎是合适的,因为它只是一个标尺。
对于左视图和底视图,我不知道要采用哪条路线。 I've played with using a wide vertical NSRulerView for the track list.这可行,但会产生其他问题。例如:顶部标尺出现在曲目列表上方。
到目前为止,我已经有四个选项:
忘记NSRulerView并在文档视图中绘制自定义内容。这似乎是可行的,但是在NSRulerView函数中内置了回避。此外,我需要找到一种方法来缩短滚动条,使它们不会与侧视图和顶视图重叠。
在顶部和左侧使用NSRulerViews。然后可能会在文档视图中手动绘制底部。
将左视图放在滚动视图外部,并通过将其链接到主滚动视图来手动上下滚动。使用NSRulerView作为顶部,在文档视图中手动绘制音频波形。
嵌入另一个NSScrollView的NSScrollView。外部手柄水平滚动,内部滚动视图处理垂直滚动。可能我认为,但似乎很讨厌。
所以我的问题归结为:采取哪条路线?任何人都可以对这个问题有所了解并指出我正确的方向吗?
答案 0 :(得分:4)
您想要一个NSScrollView左侧的视图,该视图使用NSScrollView垂直滚动,同时忽略水平滚动。
您想要一个NSScrollView下方的视图,该视图使用NSScrollView水平滚动,同时忽略垂直滚动。
你想要统治者。
使用3个单独的滚动视图,这些视图不重叠并且不会相互继承。
在您希望它们出现的任何视图中激活标尺。
同步滚动视图(这样当滚动时,其他滚动相应)。
如何同步滚动视图在帮助中。查看用户体验>控件>滚动视图Mac编程指南>同步滚动视图。这也在NSScrollView帮助指南的标题中间接链接。
如果要将三个滚动视图包含在NSSplitView中以简化大小调整,则必须添加第四个视图以使用未使用的角(放置控件的好地方)。由于NSSplitView只能垂直或水平分割,因此您必须创建一个包含2个拆分视图的NSSplitView,每个拆分视图包含您实际看到的2个视图(在一个方向上拆分,然后在另一个方向上拆分)。调整分割视图的大小必须以与滚动同步的方式同步,以保持所有四个视图的直线交叉。