tableview图像内容选择颜色

2024-02-03

我的应用程序有一个带有图像和文本字段的表格视图:

  • image = 图像渲染为模板图像(浅灰色)
  • 文本字段 = 文本颜色黑色

如果我选择一行,两者的颜色都会完美地变为白色

问题 - 我将图像更改为蓝色图像 = 默认渲染。 如果我现在选择一行,文本字段的文本颜色将更改为白色,但图像将保持蓝色。

我希望图像也将颜色更改为白色,但事实并非如此。

我做错了什么?

图像渲染为模板模式的示例 => 默认:灰色 |自动选择白色

以彩色图像渲染为默认模式的示例 => 默认:绿色 |选的还绿|预期是白色,但它保持绿色


尝试这个:

    import Cocoa

class ViewController: NSViewController {
    @IBOutlet weak var tableView:NSTableView!
    var selectIndex = -1
    override func viewDidLoad() {
        super.viewDidLoad()
        self.tableView.delegate = self
        self.tableView.dataSource = self

    }

    func tintedImage(_ image: NSImage, tint: NSColor) -> NSImage {
        guard let tinted = image.copy() as? NSImage else { return image }
        tinted.lockFocus()
        tint.set()

        let imageRect = NSRect(origin: NSZeroPoint, size: image.size)
        NSRectFillUsingOperation(imageRect, .sourceAtop)

        tinted.unlockFocus()
        return tinted
    }
}

extension ViewController:NSTableViewDataSource, NSTableViewDelegate{
    func numberOfRows(in tableView: NSTableView) -> Int {
        return 3
    }

    func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView?{


        let result = tableView.make(withIdentifier: "imageIcon", owner: self) as! NSTableCellView
        if selectIndex == row{
            result.imageView?.image = self.tintedImage(NSImage(named:"file")!, tint: NSColor.green)

        }else{
            result.imageView?.image = self.tintedImage(NSImage(named:"file")!, tint: NSColor.gray)

        }
        return result

    }

    func tableView(_ tableView: NSTableView, didAdd rowView: NSTableRowView, forRow row: Int) {
        if selectIndex == row{
            rowView.backgroundColor = NSColor.blue
        }else{
            rowView.backgroundColor = NSColor.clear
        }
    }


    func tableViewSelectionDidChange(_ notification: Notification) {
        let table = notification.object as! NSTableView
        self.selectIndex = tableView.selectedRow

        print(table.selectedRow);
        table.reloadData()
    }
}

注意:根据您的要求更改 imageView TintColor 颜色。

table row selection with color
Hope it will help you.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tableview图像内容选择颜色 的相关文章

随机推荐

  • 使用 Flask-Security 为每个用户提供唯一的 Salt

    在阅读了一些有关对密码加盐的信息后 似乎最好为每个用户使用唯一的盐 我正在努力实现 Flask Security atm 从文档中看来 您只能设置全局盐 即 SECURITY PASSWORD SALT thesalt 问题 如何为每个密码
  • 如何返回所有列名称/标题(并避免“TypeError:table.columns(...).names不是函数”)?

    我有一个非常相似的问题this one https stackoverflow com questions 24325786 table columns is not a function in datatable js 我创建一个数据表
  • 如何为子图绘制动画图例?

    我想用 ArtistAnimation 绘制动画子图 不幸的是 我不知道如何拥有一个动画传奇 我尝试了在 StackOverflow 上找到的不同方法 如果我设法获得图例 它不是动画的 而只是所有动画步骤的图例 我的代码如下所示 impor
  • 如何在 Express 应用程序中使用通过 npm 安装的 jQuery?

    我有一个 Node js Express 应用程序 并使用 npm 安装了 jQuery in the app js我使用的文件 var jquery require jquery 在 html 文件头中 我包含了使用 jQuery 的 j
  • Android 中未应用 CSS 旋转(phonegap)

    我正在phonegap 中构建一个Android 应用程序 但我遇到了使用CSS 旋转div 的问题 我在这里发现了类似的问题 CSS 旋转未应用于 Android 4 0 webview https stackoverflow com q
  • 路线变更转场效果

    我想知道你们中是否有人在Angular2中实现了Router过渡效果 我想主要使用CSS 到目前为止 我已经摆脱了不需要的状态 并在我的视图中添加了一些 CSS 技巧 以欺骗用户存在状态更改 但这种方法不会让我有任何结果 我具体寻找的是重叠
  • 在 Go 中将 UTC 转换为“本地”时间

    如何将 UTC 时间转换为当地时间 我已经为我需要当地时间的所有国家 地区创建了一张具有 UTC 差异的地图 然后 我将该差异作为持续时间添加到当前时间 UTC 中 并打印结果 希望这是该特定国家 地区的当地时间 由于某些原因 结果是错误的
  • msbuild 无法发布的项目

    我有一个 vbproj 它是一个 VB NET Web 应用程序项目 我可以构建包含该项目的解决方案 然后右键单击该项目并在本地发布 VS 2013 专业更新 3 没有问题 我正在尝试构建这个解决方案 然后使用 Jenkins CI 中的
  • 高性能应用程序中的 C/C++ 与 Java/C#

    我的问题是关于 Java 与编译代码的性能对比 例如高性能数值应用程序中的 C fortran 汇编 我知道这是一个有争议的话题 但我正在寻找具体的答案 示例 还有社区维基 我以前曾问过类似的问题 但我认为我提出的问题很宽泛 但没有得到我想
  • 如何将 shell 脚本移植到 Perl?

    这是一个 shell 脚本 我如何在 Perl 中完成同样的事情 prfile sqllib db2profile profile if f prfile prfile then prfile else read p Enter a val
  • 如何在移动视图中显示输入类型数字的向上/向下箭头?

    对于输入类型数字 可以轻松显示 Web 视图中输入框右侧的向上 向下箭头 我还阻止了输入的默认输入 因此您被迫使用箭头来增加 减少数字 但箭头不会显示在移动视图中 有没有什么方法可以强制移动视图中的箭头 以便用户不会输入数字而是使用增量 减
  • AdMob 广告未在 iOS 中展示

    过去几天 iOS 版本没有展示 AdMob 广告 它曾经有效 我没有改变任何东西 iOS 9 3 5 IDE NetBeans 8 0 2 CodenameOne 插件 3 5 2 操作系统 Windows 7 Google 弃用了旧的 a
  • 当它说将 crossdomain.xml 放在根目录中时,它会在 IIS 上的什么位置?

    是 wwwroot C 托管资产的根虚拟目录 还是资产所在的同一文件夹 意思是 如果我有一个虚拟目录 virdir 和一个子目录 swf 它实际上就像 C somedir assets swf 那么 crossdomain xml 需要放在
  • Visual C++:checked_array_iterator 有什么用?

    关于编译代码4 级警告 W4 I get C4996 http msdn microsoft com en us library ttcz0bys aspx警告std copy 参数为 C 数组 不是向量等 STL 容器 的调用 解决此问题
  • 谷歌如何通过两步验证识别“可信设备”

    假设您已注册您的设备 当您返回网站时 它使用哪些信息来验证您是否在该设备上 它是否在您的计算机上存储某些内容 例如 cookie 或者是否使用其他算法来确定您从何处登录 它存储有关您与服务器对话的各种信息 SSL cookie 会话数据 例
  • 如何使用 HTML5 Geolocation API 实现承诺?

    我怎样才能更正下面的代码 使其不返回undefined的值getPreciseLocation功能 总之 当用户点击时 应该有一个 AJAX 调用来获取当前天气 precise location prompt并与浏览器共享位置 然而目前有一
  • 为什么“NOT IN”在这个 NSPredicate 中不起作用?

    A b and B a是逆多关系 为什么这个谓词是A work NSPredicate predicate NSPredicate predicateWithFormat NOT SELF IN bObject a 而这个则没有 NSPre
  • 如何在 websocket python 中发送“标头”

    我怎样才能做到这一点 这是我的代码 import websockets async def test async with websockets connect ws iqoption com as websocket response a
  • 在浏览器之外使用 Websockets 有什么充分的理由吗?

    Websocket 专为浏览器中的快速双向通信而设计 假设您可以控制服务器和本机客户端 例如 iOS 或 Mac 应用程序 是否有任何充分的理由或情况可以通过 Websocket 进行通信而不是使用 HTTP 库 我将回答几个不同的问题 希
  • tableview图像内容选择颜色

    我的应用程序有一个带有图像和文本字段的表格视图 image 图像渲染为模板图像 浅灰色 文本字段 文本颜色黑色 如果我选择一行 两者的颜色都会完美地变为白色 问题 我将图像更改为蓝色图像 默认渲染 如果我现在选择一行 文本字段的文本颜色将更