问题:我正在尝试创建一个自定义透明TableView
页眉,并且我已经创建了 and 的子类,NSTableHeaderView
并且在子类中NSTableHeaderCell
覆盖了-drawWithFrame:inView
and 。这些方法按预期工作,但仅在第一次绘制表格列标题时。然而,在用户单击表头后,它会以白色背景重新绘制。具体来说,这里是自定义方法实现:-drawInteriorWithFrame:inView
NSTableHeaderCell
@interface MYTableHeaderCell : NSTableHeaderCell
@end
@implementation MYTableHeaderCell
-(void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView{
//[super drawWithFrame:cellFrame inView:controlView];
NSBezierPath *path = [NSBezierPath bezierPathWithRect:cellFrame];
NSColor *clearColor = [NSColor clearColor];
[clearColor setFill];
[path fill];
[self drawInteriorWithFrame:cellFrame inView:controlView];
}
-(void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView{
//[super drawInteriorWithFrame:cellFrame inView:controlView];
NSBezierPath *path = [NSBezierPath bezierPathWithRect:cellFrame];
NSColor *clearColor = [NSColor clearColor];
[clearColor setFill];
[path fill];
NSRect titleRect = [self titleRectForBounds:cellFrame];
[self.attributedStringValue drawInRect:titleRect];
}
-(NSColor *)highlightColorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView{
return [NSColor clearColor];
}
-(BOOL)isOpaque{
return NO;
}
首次绘制表格视图标题时,它 具有预期的透明背景。 但是,单击标题后,它会被 重新绘制为具有白色背景。
据我所知,点击表格视图标题后
-drawInteriorWithFrame:inView:
当需要绘制头部时仍然调用。然而,
-drawWithFrame:inView:
不是。似乎另一个类正在单元格文本下方绘制一个白色视图。
我已经查看了NSTableHeaderCell
和NSTableHeaderView
类描述以及它们的所有描述,superclasses
但我无法弄清楚为什么要绘制白色背景。我显然错过了一些基本的东西。
问题:是什么导致绘制白色视图?