カスタム NSTextFieldCell を作成し、- (void)drawInteriorWithFrame: (NSRect)cellFrame inView: (NSView *)controlView
ここで独自の描画を行うために上書きしました。ただ、背景の描画が苦手です。呼び出さないとsuper
背景がクリアされず、その後の描画でにじみ効果のようなものが作成されます。drawsBackground が設定されている場合、これは発生しません。この場合、cellFrame を背景色で塗りつぶすことができるためです。
- (void)drawInteriorWithFrame: (NSRect)cellFrame inView: (NSView *)controlView {
if (self.drawsBackground) {
[self.backgroundColor set];
} else {
[NSColor.clearColor set];
}
NSRectFill(cellFrame);
[self.attributedStringValue drawInRect: cellFrame];
}
しかし、背景の描画が無効になっている場合、背景をクリアするにはどうすればよいですか? もちろん、テキストビューの下にある他のコンテンツが透けて見えるようにしたいです(したがって、スーパービューの背景色で消去するだけでは解決できません)。