如何在可可画一个圆圈

时间:2014-05-11 10:59:58

标签: objective-c cocoa nsview nsbutton

我正在尝试在我的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]];

1 个答案:

答案 0 :(得分:2)

使用[self bounds]代替dirtyRect。滚动视图滚动时,可能会要求您的单元格仅绘制部分内容。在这种情况下,dirtyRect小于您的单元格。在这种情况下,仍然可以绘制整个单元格。