NSCell с подразделениями - PullRequest
1 голос
/ 05 июля 2011

Я хочу знать, есть ли способ рисования 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 ]

1 голос
/ 07 июля 2011

Как оказалось, при создании подкласса 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];    
}
1 голос
/ 05 июля 2011

Нет стандартного NSCell, который мог бы сделать это, но вы можете написать свой собственный подкласс одного из классов NSCell и заставить его сделать это.См. Разделы Управление и программирование ячейки .

...