如何更改NStableView点击时的背景颜色

NSTableView 中每一行是用NSTableRowView表示的,因此可以继承此类,重写点击时的drawSelection方法

示例更改了点击时的行颜色,并且在最左边画了一条线:

class CSTableRowView: NSTableRowView {

    override func drawSelection(in dirtyRect: NSRect) {
        if self.selectionHighlightStyle != .none {
            // 填充背景颜色
            let fillColor = NSColor(red: 35.0/255, green: 63.0/255, blue: 95.0/255, alpha: 1)
            fillColor.set()
            dirtyRect.fill()
            // 绘制左侧边框
            let lineColor = NSColor(red: 0.20, green: 0.85, blue: 0.99, alpha: 1.00)
            lineColor.setFill()
            let lineRect = NSRect(x: 0, y: 0, width: 2, height: dirtyRect.height)
            lineRect.fill()
        }
    }
}

在代理方法中,使用自定义的 rowView
// 示例用的 outlineView

    func outlineView(_ outlineView: NSOutlineView, rowViewForItem item: Any) -> NSTableRowView? {
        var rowView = outlineView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "rowView"), owner: self) as? CSTableRowView
        if rowView == nil {
            rowView = CSTableRowView()
            rowView?.identifier = NSUserInterfaceItemIdentifier(rawValue: "rowView")
        }
        return rowView
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,909评论 0 17
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 11,322评论 0 10
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,903评论 1 32
  • 一杯敬自由,一杯敬朝阳。 久不见朝阳,自由成空谈。 有些人没有受伤,却承了更为疼的痛。 紫木林,落月 “乖乖,乖乖...
    尛凩袹尛阅读 1,859评论 0 0
  • 今晚的网络卡的不行, 破坏了听课学习的心情。 间断的人声是我有些迷糊, 一时间陷入半睡半醒的困窘。 不防写点东西,...
    汀澜_893c阅读 1,256评论 0 0

友情链接更多精彩内容