【发布时间】:2016-07-18 22:58:28
【问题描述】:
目标
我的应用中有一个 NSTableView,我想绘制“重叠”行以创建类似于 Automator.app 中的“连接”效果:
我正在尝试什么
我正在考虑的方法是使用 NSTableView 的-(NSRect)frameOfCellAtColumn:(NSInteger)columnIndex row:(NSInteger)rowIndex 方法在第一行之后增加所有行的 Y 原点。我的 tableView 是基于视图的,它不使用自动布局。
我的问题是:这是实现这种效果的正确方法吗?让 tableView 绘制具有重叠帧的行似乎是“危险的”,我不知道这是否会导致 tableView 底部出现一堆额外的空白空间(因为 tableView 不会重叠在计算其整体高度时将框架考虑在内;它只使用每行的 rowHeight 值的总和。)
有谁知道是否有不同的规范方式来实现 Automator tableView 的效果?
【问题讨论】:
-
不让单元格重叠,为什么不将三角形的尖端包含在具有圆形顶部的单元格的背景图像中。这创造了没有复杂性的重叠错觉
-
我考虑过这种方法。但是当我查看 Automator 时,Apple 绝对不是这样做的。如果拖动其中一行,很明显三角形和半圆是 cellView 本身的一部分,而不是在背景中绘制的。选择突出显示还在三角形/半圆周围绘制了一个漂亮的蓝色边框,该边框自然地延伸到单元格的边框。而且,由于 Automator 和我的应用程序中的单元格都是“可折叠的”,因此计算在后台进行虚假绘图的精确点变得非常困难。
-
不过,问题在于您没有理由相信 Automator 使用的是表格视图,而不是(自定义?)堆叠视图。因此,就如何使用表格视图复制它来寻求建议会牵扯到潜在响应者的双手。
-
真;我不能证明它不是另一个类。但它拥有 NSTableView 的所有机制。当您拖动一行时,该行会突然“捕捉”到它不重叠的位置。这让我相信有一些魔法正在发生,只是调整帧。
标签: objective-c cocoa nstableview appkit nstablerowview