在NSTableView中仅为填充的行绘制网格线?

sam*_*sam 25 cocoa

如何仅为已填充的行在NSTableView中绘制网格线?当我将网格样式掩码设置为NSTableViewSolidHorizo​​ntalGridStyleMask时,它会为所有行绘制网格线,无论是否填充.

我正在寻找一些示例代码来做到这一点.

Jac*_*ban 45

到目前为止,我发现最适合我的是以下代码.只是欺骗原始的网格绘图代码只绘制填充的行.

如果需要,子类NSTableView,并覆盖drawGridInClipRect:(NSRect)clipRect,如下所示:

- (void)drawGridInClipRect:(NSRect)clipRect
{
    NSRect lastRowRect = [self rectOfRow:[self numberOfRows]-1];
    NSRect myClipRect = NSMakeRect(0, 0, lastRowRect.size.width, NSMaxY(lastRowRect));
    NSRect finalClipRect = NSIntersectionRect(clipRect, myClipRect);
    [super drawGridInClipRect:finalClipRect];
}
Run Code Online (Sandbox Code Playgroud)


Osk*_*kar 18

在Swift 3.1中,这就是您所需要的:

import Cocoa

class GridClipTableView: NSTableView {

    override func drawGrid(inClipRect clipRect: NSRect) { }

}
Run Code Online (Sandbox Code Playgroud)

  • 与Obj-C相同:使用空方法覆盖`drawGridInClipRect:`,并且仅绘制项目网格。 (2认同)