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:不会被调用。