gpt4 book ai didi

macos - 如何更改 NSForm 中单个单元格的背景颜色?

转载 作者:行者123 更新时间:2023-12-03 17:14:55 26 4
gpt4 key购买 nike

我想在 NSForm 中单独设置单元格背景颜色。我认为这将是 NSForm 子类化和重写 -drawCellAtRow:column: 的问题。但是 -drawCellAtRow:column: 仅当单元格接收焦点时才会被调用。

我尝试过在 NSForm 上调用 -setCellBackgroundColor,但这会更改标题背景,而不是值。

是否有我没有找到的方法?

最佳答案

我认为这对于 NSFormCell 来说是不可能的。

我尝试的第一件事:

self.form.drawsCellBackground = YES;
self.form.cellBackgroundColor = [NSColor redColor];

这似乎只在标签后面绘制背景。一些进一步的测试表明,单个 NSFormCell 跨越标签和文本字段,并且背景绘制在两者后面。当文本字段绘制在顶部时,其自身的背景会覆盖红色。

接下来我将 NSFormCell 子类化。唯一要调用的方法是-drawWithFrame:inView:。该框架再次跨越标签和文本字段。控制 View 是NSForm。如果我绘制自己的背景,然后调用 [super drawWithFrame:inView:],它会如上所示,在标签后面可见,但在文本字段后面不可见。如果我调用 super 然后绘制背景,它就会出现在两者之上。

NSFormCell 的实现不会调用 -drawInteriorWithFrame:inView: ,它似乎也没有提供另一个覆盖点。

我尝试设置highlighted,并实现-highlightColorWithFrame:inView:——同样的问题。

当我试图理解这一切是如何工作的时,我也尝试了 NSForm 的子类化。唯一调用的与绘图相关的方法是-drawRect:。这些方法永远不会被调用:-drawCellAtIndex:-drawCellAtRow:column:-drawCell:-drawCellInside: >.

除了让 Apple 解决这个问题之外,我看到的唯一解决方案是尝试使用 NSForm 的父类(super class) NSMatrix,或者仅使用标签和文本字段。

关于macos - 如何更改 NSForm 中单个单元格的背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9574884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com