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 и заставить его делать это. См. Разделы " Управление и программирование ячеек".