我试图在基于视图的NSTableView中更改标题行的背景颜色但没有运气
尝试了这个:
tableView.headerView?.layer?.backgroundColor = CGColor.black
和这个(正如之前的早期Obj-C帖子中所建议的那样):
for column in tableView.tableColumns {
column.headerCell.backgroundColor = NSColor(red: 0/255, green: 108/255, blue: 178/255, alpha: 1)
column.headerCell.textColor = NSColor.blue
}
答案 0 :(得分:1)
创建自定义NSTableHeaderCell
子类并设置NSTableColumn
的{{1}}属性可让您自定义表格标题行的外观。
Apple的documentation建议在自定义标题单元格时覆盖headerCell
方法,但这不会填充整个单元格的背景颜色 - 需要覆盖drawInterior:withFrame
。调用draw:withFrame
将绘制标题的标签和其他元素。如果要将标题的内容保持在单元格中垂直居中,则需要调整内部框架。
drawInterior
有一点需要注意 - 如果需要,还需要绘制列分隔线。
答案 1 :(得分:0)
我也有同样的问题。我发现headercell是从NSTextFieldCell继承的。其中有背景颜色属性。您可以访问它并将其设置为新颜色。记得将绘制背景设置为YES。
*when you create new column*
[[newCol headerCell] setDrawsBackground:YES];
- (void)tableView:(NSTableView *)tableView didClickTableColumn:(NSTableColumn *)tableColumn{
[[tableColumn headerCell] setBackgroundColor:<color you want to change to>];
}
答案 2 :(得分:0)
添加彩色子视图可能是实现这一目标的最简洁的方法。它介于默认背景和绘制标题文本和控件的单元格之间
NSRect rect = tableview.headerView.frame;
rect.size.width = 10000; /// just pick something wide enough here
MyColoredView * coverView = [[MyColoredView alloc] initWithFrame:rect];
coverView.autoresizingMask = tableview.headerView.autoresizingMask;
[tableview.headerView.superview addSubview:aView positioned:NSWindowBelow relativeTo:tableview.headerView];