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 ответа

Решение

Оказывается, при создании подкласса 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];    
}

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

Другие вопросы по тегам