我正在尝试在我的NSTableview基于视图的单元格中绘制一个带有背景颜色的圆圈。我尝试了很多选项,但都不行。
我在drawRect方法中使用了NSView子类并剪切了圆形路径。它工作,但每当我滚动表视图时,它的形状不再是圆形。
CGContextRef context = (CGContextRef) [[NSGraphicsContext currentContext] graphicsPort];
NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:dirtyRect xRadius:10.0 yRadius:5.0];
[path addClip];
// Fill in background Color
const CGFloat *components = CGColorGetComponents(backgroundColor.CGColor);
CGContextSetRGBFillColor(context, components[0],components[1],components[2],components[3]);
CGContextFillRect(context, NSRectToCGRect(dirtyRect));
[super drawRect:dirtyRect];
我也尝试使用斜面按钮(圆形),但是当我将背景颜色设置为其单元格时,它不是圆形的。它成了一个广场。
[result.tagImageButton.cell setBackgroundColor:[NSColor redColor]];
答案 0 :(得分:2)
使用[self bounds]
代替dirtyRect
。滚动视图滚动时,可能会要求您的单元格仅绘制部分内容。在这种情况下,dirtyRect
小于您的单元格。在这种情况下,仍然可以绘制整个单元格。