問題:TableView
カスタムの透明なヘッダーを作成しようとしていて、サブクラス内にNSTableHeaderView
andのサブクラス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
たが、白い背景が描かれている理由がわかりません。私は明らかに基本的な何かを欠いています。
質問:白いビューが描画される原因は何ですか?