NSCell与分裂

时间:2011-07-04 21:23:29

标签: objective-c cocoa macos nscell

我想知道是否有一种绘制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

注意:

  • “_ _ _”被认为是三个空格(我不知道如何代表它们)。
  • 请注意,列标题和值的长度会有所不同。

提前致谢。

2 个答案:

答案 0 :(得分:1)

没有可以执行此操作的标准NSCell,但您可以编写自己的NSCell类之一的子类并使其执行此操作。请参阅Control and Cell Programming Topics

答案 1 :(得分: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];    
}