我正在尝试在 NSTableview 的基于 View 的单元格中绘制一个带有背景颜色的圆圈。我尝试了很多选项,但没有一个能正常工作。
我使用了 NSView 子类并在drawRect方法中剪切了圆形路径。它有效,但是每当我滚动表格 View 时,它的形状就不再是圆形的。
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]];
最佳答案
使用[selfbounds]
而不是dirtyRect
。当 ScrollView 滚动时,您的单元格可能会被要求仅绘制其自身的一部分。在这种情况下,dirtyRect
比您的单元格小。在这种情况下,仍然可以绘制整个单元格。
关于objective-c - 如何在 cocoa 中画一个圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23591758/