Swift 如何正确设置NSTableHeader的背景色?
我花了最后一天的时间在互联网上搜索如何设置NSTableHeaderCell的背景色。我所取得的成就是:Swift 如何正确设置NSTableHeader的背景色?,swift,cocoa,subclass,background-color,nstableview,Swift,Cocoa,Subclass,Background Color,Nstableview,我花了最后一天的时间在互联网上搜索如何设置NSTableHeaderCell的背景色。我所取得的成就是: func tableView(_ numberTableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? { if tableColumn!.identifier == "description" { let cell = NSTableH
func tableView(_ numberTableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
if tableColumn!.identifier == "description" {
let cell = NSTableHeaderCell()
cell.title = "Header Title"
cell.backgroundColor = NSColor.red
cell.drawsBackground = true
cell.isBordered = false
cell.font = NSFont(name: "System", size: 13)
tableColumn!.headerCell = cell
}
return nil
}
结果如下所示:
我尝试将字体更改为NSFont(名称:“Helvetica”,大小:26)
,然后在应用程序启动后,它看起来像:
但在第一次单击单元格后,单元格会再次变小:
我想知道是否有一种方法可以设置整个单元格的背景色,而不会在单击后变小。我还尝试将NSTableHeaderView子类化,但这只是绘制整个HeaderView,无法设置更多标题。这将是一个很大的帮助,以获得一些想法
编辑:
根据建议的答案,我尝试将NSTableHeaderCell子类化并设置:tableColumn?.headerCell=MyHeaderCell()
这就是结果:
所以现在整个HeaderView都是彩色的。单击一个单元格,该单元格将再次变为白色。不知何故,我仍然不知道如何更改单元格的真实背景。为什么要替换
viewForTableColumn
中的标题单元格?可能重复@Willeke我试图执行您先前回答的问题中建议的解决方案。但我就是不知道怎么做才对。我更新了代码,尝试将Headercell子类化。
class MyHeaderCell: NSTableHeaderCell {
override func draw(withFrame cellFrame: NSRect, in controlView: NSView) {
super.draw(withFrame: cellFrame, in: controlView)
NSColor.red.set()
self.backgroundColor = NSColor.red
NSRectFillUsingOperation(cellFrame, .sourceOver)
}
}