gpt4 book ai didi

cocoa - 更改选择时的 NSTextFieldCell 背景颜色

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

我试图在选择单元格时更改 NSTextFieldCell 的背景颜色。

这是代码:

- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {

[super drawWithFrame:cellFrame inView:controlView];

if([self isHighlighted]) {
[self setBackgroundColor:[NSColor whiteColor]];
}
}

但所选行始终是蓝色的。我错过了什么吗?

注意:这不是 iOS 应用程序。

提前谢谢您。

最佳答案

这并不像我之前想象的那么容易:NStableview 那里有一些问题。如果你使用类似的东西:

[destinationsListForSaleTableView setSelectionHighlightStyle:NSTableViewSelectionHighlightStyleNone];

你必须做

 - (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
if ([[aTableView selectedRowIndexes] containsIndex:rowIndex]) {
[aCell setBackgroundColor: [NSColor colorWithDeviceRed:0.29 green:0.27 blue:0.42 alpha:1]];

} else [aCell setBackgroundColor: [NSColor colorWithDeviceRed:0.52 green:0.54 blue:0.70 alpha:1]];
[aCell setDrawsBackground:YES];

}

如果你的单元格不是自定义的,这就足够了。如果你改变高度和内部,它必须更复杂:

保留选择样式表供您选择。在细胞子类中:

-(NSColor *)highlightColorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
return nil;
//[NSColor colorWithDeviceRed:0.29 green:0.27 blue:0.42 alpha:1];
}

- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
if ([self isHighlighted]) {
[[NSColor colorWithDeviceRed:0.29 green:0.27 blue:0.42 alpha:1] set];
cellFrame.origin.x -= 1;
cellFrame.origin.y -= 1;
cellFrame.size.height += 2;
cellFrame.size.width += 3;

NSRectFill(cellFrame);

}
[super drawWithFrame:cellFrame inView:controlView];
}

你问我为什么要改变填充物的大小?因为当你使用背景时,苹果会留下一个小盒子,它会有不同的颜色。

关于cocoa - 更改选择时的 NSTextFieldCell 背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5205353/

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