【Swift Mac开发】自定义NSTableView选中行背景

  由于使用的是基于视图的NSTableView,因此可以将NSTableRowView子类化,将其提供给表委托方法- (NSTableRowView *)tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row;,然后在行视图类中自定义选择。

import Foundation
import Cocoa

class BMTableRowView : NSTableRowView {
    
    override func drawSelection(in dirtyRect: NSRect) {
        if self.selectionHighlightStyle != .none {
            let selectionRect = bounds.insetBy(dx: 0, dy: 0)
            NSColor.color(withRGB: 0x3578f6)!.setFill()
            let selectionPath = NSBezierPath(roundedRect: selectionRect, xRadius: 6, yRadius: 6)
            selectionPath.fill()
        }
    }
}

  使用:

    func tableView(_ tableView: NSTableView, rowViewForRow row: Int) -> NSTableRowView? {
        let rowView = BMTableRowView()
        return rowView
    }

 

posted @ 2021-05-14 19:18  Mr·Xu  阅读(254)  评论(0编辑  收藏  举报