Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 将分隔符颜色更改为背景色或将其从NSTableView中删除_Objective C_Macos_Cocoa_Nstableview - Fatal编程技术网

Objective c 将分隔符颜色更改为背景色或将其从NSTableView中删除

Objective c 将分隔符颜色更改为背景色或将其从NSTableView中删除,objective-c,macos,cocoa,nstableview,Objective C,Macos,Cocoa,Nstableview,我希望在基于视图的NSTableView中删除分隔符颜色 看起来是这样的: 对于UITableView,有一个方法setSeparatorColor:,但不适用于NSTableView 我们将非常感谢您的解决方案。我这样做是因为: 将小区间距更改为: [aTableView setIntercellSpacing:NSMakeSize(0, 0)]; 并更改单元格的高度,将视图的宽度设置为30.f,正在绘制的单元格为35.f 现在它是完美的屏幕截图: 对于NSTableView,Interf

我希望在基于视图的
NSTableView
中删除分隔符颜色

看起来是这样的:

对于UITableView,有一个方法
setSeparatorColor:
,但不适用于NSTableView

我们将非常感谢您的解决方案。

我这样做是因为:

将小区间距更改为:

[aTableView setIntercellSpacing:NSMakeSize(0, 0)];
并更改单元格的高度,将视图的宽度设置为
30.f
,正在绘制的单元格为
35.f

现在它是完美的屏幕截图:


对于
NSTableView
,Interface Builder具有
水平网格
垂直网格
网格颜色
的设置。这些在API中反映为
-setGridStyleMask
setGridColor

他们做的正是你想要的

[table setGridColor:[NSColor clearColor]];
[table setGridStyleMask:NSTableViewGridNone];

也许我可以提到,在基于视图的表中,NSTableRowView负责绘制分隔符。因此,在表的检查器中,您将其网格设置为“无”,并在NSTableRowView子类中实现
drawSeparatorInRect:
,在您的情况下,这意味着将其保留为空。

Interface Builder的答案:


我想要透明颜色。如果将网格设置为“无”,唯一的颜色将是背景色,正如您所要求的那样。如果您希望它是另一种颜色,当然可以将其设置为另一种部分透明的颜色。任何颜色都可以有一个透明度集(alpha)。我用这种方法检查过,它仍然显示在基于视图的tableview中:(好的,我用一个基于视图的表格对此进行了测试。Cocoa在表格单元格顶部绘制网格。因此,唯一会使网格消失的颜色是0%alpha。但是将网格设置为“无”根本不会绘制网格,因此无法显示网格。因此,可能只是为您(而不是我)显示的视图之间的间隙)。我想这就是为什么单元格间距和/或更改单元格视图的高度对您有效的原因。不仅是单元格间距,我还必须同时实现这两个功能(同时增加视图高度)@哈里克里希南:已经检查过了,但这对我来说不起作用,我还必须增加viewSize。是的,你的子类化观点是正确的。但我这样做没有那么大的开销。正如你在我的解决方案中看到的那样。如果你在NSTableView中关闭网格视图,drawSeparatorInRect:不会被调用。