如何在 NSTableView 中设置 NSTextFieldCell 的框架

How to set frame of NSTextFieldCell in NSTableView

我在 Mac 中设置 NSTextFieldCell 的框架时遇到问题。我的 NSTextFieldCell 位于列的 (0,0) 点。我需要在 y 位置有 4px 的差距。下面是现有 UI.

的图像

.xib 结构如下:

我尝试设置框架的委托方法如下:

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)aRow
{
    if ([[aTableColumn identifier] isEqualToString:@"notes"])
    {
        [aCell setBackgroundColor:[NSColor redColor]];

        NSTextFieldCell *theCellView = aCell;
        NSView *controlView = [theCellView controlView];
        NSRect frame = controlView.frame;
        frame.origin.x = 120;
        frame.origin.y = 130;
        [controlView setFrame:frame];       
    }
}

单元格没有边框。单元格是轻量级对象,绘制在拥有控制视图告诉它们的地方。 table 视图可以使用单个单元格来绘制给定列的所有行。它将计算列的一行的框架,用该行和列的值配置单元格,并告诉单元格在它计算的框架中绘制自己。然后,它将为下一行配置单元格,并告诉单元格在该行的框架中绘制自己。等等

因此,您需要专注于 table 视图,而不是影响单元格绘制框架的单元格,因为计算该框架的是 table 视图。您是否尝试过将 intercellSpacing 设置为非零值 height

此外,您应该考虑转换为基于视图的 table 视图,这样您可以更好地控制。