gpt4 book ai didi

objective-c - NSTableView:创建 "Overlapping"行

转载 作者:行者123 更新时间:2023-12-03 16:28:21 26 4
gpt4 key购买 nike

目标

我的应用程序中有一个 NSTableView,我想绘制“重叠”行以创建像 Automator.app 中那样的“连接”效果:

screenshot of automator app

<小时/>

我在尝试什么

我正在考虑的方法是使用 NSTableView 的 -(NSRect)frameOfCellAtColumn:(NSInteger)columnIndex row:(NSInteger)rowIndex 方法来增加第一行之后所有行的 Y 原点。我的 tableView 是基于 View 的,它不使用自动布局。

我的问题是:这是实现这种效果的正确方法吗?让 tableView 绘制具有重叠框架的行似乎是“危险的”,我无法弄清楚这是否会导致 tableView 底部出现一堆额外的空白空间(因为 tableView 不接受重叠的行)计算其整体高度时考虑到帧;它只使用每行的 rowHeight 值的总和。)

有谁知道是否有不同的、规范的方法来实现 Automator tableView 的效果?

最佳答案

正如 Patrick Goley 所建议的,我认为您应该通过将连接点绘制为背景或表格 View 分隔符的一部分来伪造它。

苹果的HoverTableDemo sample说明了一些技术和 WWDC 2011 session 120 video “基于 View 的 NSTableView 从基础到高级”更详细地描述了它们。

我认为您应该设置表格 View 的intercellSpacing来适应连接点图像的大小。您可以将gridStyleMask设置为包含NSTableViewSolidHorizo​​ntalGridLineMask

您将使用 NSTableRowView 的自定义子类来自定义绘制背景和分隔符(行之间)。您需要重写 -drawBackgroundInRect:-drawSeparatorInRect:

您可以使用NSTableView的自定义子类来自定义绘制超出行尾的网格,如果您想要的话,这可能只是最后一行底部的箭头。您可以重写 -drawGridInClipRect: 来执行此操作。

关于objective-c - NSTableView:创建 "Overlapping"行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38447196/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com