我正在尝试子类NSCell
绘制自定义背景突出显示.文档似乎表明覆盖highlight:withFrame:inView:
应该允许我这样做但是从不调用该方法.
相反,我已经覆盖drawInteriorWithFrame:inView:
哪个工作正常 - 我可以在单元格中绘制我想要的东西.然而,问题是我必须自己绘制所有内容,失去我正在扩展的NSCell类型的功能 - 例如NSTextFieldCell显示文本的能力:
自定义绘制的突出显示
但是,我只想重绘背景(突出显示),并保留使用扩展单元格的主要功能的能力:
当然,我也可以自己绘制文本,但我希望有一种更简单的方法.
任何帮助深表感谢.
Joe*_*oeR 11
感谢@Bavarious的帮助,我已经设法解决了这个问题.我的扩展NSTextFieldCell类实现现在包含:
-(NSColor *)highlightColorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
return nil;
}
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
if ([self isHighlighted]) {
// Draw highlight background here
}
[super drawInteriorWithFrame:cellFrame inView:controlView];
}
Run Code Online (Sandbox Code Playgroud)
关键是要确保你回到nil
了highlightColorWithFrame:inView:
停止drawInteriorWithFrame:inView:
绘制背景,但仍然调用它来绘制的主要内容(在这种情况下文字).