アプリケーションの UI をカスタマイズしようとしていますが、NSTableView の角を丸くしたいと考えています。だから私は NSTableView をサブクラス化し、これを得ました:
ただし、テーブルにデータを入力して行を選択すると、次のように境界線の上に選択が描画されます。
テーブル ビューの描画コードにクリップを追加しようとしましたが、機能しません。これを修正する方法について何か提案はありますか?
編集:
NSTableView の私の描画コードは次のとおりです。
- (void)drawRect:(NSRect)dirtyRect {
[NSGraphicsContext saveGraphicsState];
NSRect frame = NSMakeRect(0.0, 0.0, [self bounds].size.width, [self bounds].size.height-1.0);
[[NSBezierPath bezierPathWithRoundedRect:frame xRadius:3.6 yRadius:3.6] addClip];
[super drawRect:dirtyRect];
[NSGraphicsContext restoreGraphicsState];
}
実際の丸みを帯びたフレームは、NSScrollView の drawRect メソッドで描画されます。興味深いことに、これにより最初と最後の行の選択がクリップされます。
ただし、テーブルがスクロールしている場合はそうではありません:
NSScrollView の丸みを帯びたフレーム内ですべての描画をクリップするにはどうすればよいですか?