带圆角的 NSTableView

dan*_*web 3 macos cocoa rounded-corners nstableview

我正在尝试自定义我的应用程序的 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];
}
Run Code Online (Sandbox Code Playgroud)

实际的圆形框架是在 NSScrollView drawRect 方法中绘制的。有趣的是,这确实剪辑了第一行和最后一行的选择:

伊格

但不是在表格滚动时:

伊格

所以问题仍然存在:如何在 NSScrollView 的圆形框架内剪辑所有绘图?

gng*_*zrd 6

我发现你可以在表格视图的容器滚动视图上调用它。

self.scrollView.wantsLayer = TRUE;
self.scrollView.layer.cornerRadius = 6;
Run Code Online (Sandbox Code Playgroud)

这就是我所需要的并且它有效。不需要子类化。