1

我想知道是否有像下面的示例那样绘制 NSCell 的方法。这个想法是适合同一列,3 行,第一个有足够的空间放置标题,其余的有 2 列。

TITLE_ _ __ _ _ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ ____ DATA_TITLE_1
:DATA_VALUE_1 _ _ _ DATA_TITLE_2:DATA_VALUE_2 DATA_TITLE_3
:DATA__VALUE_1 DATA_TITLE_4:DATA_VALUE_2

笔记:

  • “_ _ _”应该是三个空格(我不知道如何表示它们)。
  • 请记住,列标题和值的长度会有所不同。

提前致谢。

4

2 回答 2

1

没有标准的 NSCell 可以做到这一点,但您可以编写自己的 NSCell 类之一的子类并使其做到这一点。请参阅控制和单元编程主题

于 2011-07-05T09:10:17.643 回答
1

事实证明,当子类化 NSCell 时,您可以在框架内添加任意数量的单元格。您只需要覆盖 drawInteriorWithFrame 方法分配一个 NSCell,然后在单元格框架内的任何位置绘制它。

这是一个简单的例子:

- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
    NSRect modifiedFrame = NSMakeRect(cellFrame.origin.x +10, cellFrame.origin.y +10, cellFrame.size.width -10, cellFrame.size.height -10);
    NSTextFieldCell *modifiedCell = [[NSTextFieldCell alloc] initTextCell:@"TEST"];
    [modifiedCell drawWithFrame:modifiedFrame inView:controlView];   
    [super drawInteriorWithFrame:cellFrame inView:controlView];    
}
于 2011-07-07T13:27:27.937 回答