У меня есть NSTableView
с несколькими текстовыми столбцами. По умолчанию dataCell
для этих столбцов является экземпляром класса Apple NSTextFieldCell
, который выполняет всевозможные замечательные вещи, но он рисует текст, выровненный с верхней частью ячейки, и я хочу, чтобы текст был вертикально центрирован в ячейка.
В NSTextFieldCell
есть внутренний флаг, который можно использовать для вертикального центрирования текста, и он прекрасно работает. Однако, поскольку это внутренний флаг, его использование не санкционировано Apple, и оно может просто исчезнуть без предупреждения в будущей версии. В настоящее время я использую этот внутренний флаг, потому что он прост и эффективен. Apple, очевидно, потратила некоторое время на реализацию этой функции, поэтому мне не нравится идея ее повторного внедрения.
Итак, мой вопрос таков: Каков правильный способ реализовать то, что ведет себя точно так же, как Apple NStextFieldCell, но рисует вертикально центрированный текст вместо выровненного по верхнему краю?
Для записи здесь мое текущее "решение":
@interface NSTextFieldCell (MyCategories)
- (void)setVerticalCentering:(BOOL)centerVertical;
@end
@implementation NSTextFieldCell (MyCategories)
- (void)setVerticalCentering:(BOOL)centerVertical
{
@try { _cFlags.vCentered = centerVertical ? 1 : 0; }
@catch(...) { NSLog(@"*** unable to set vertical centering"); }
}
@end
Используется следующим образом:
[[myTableColumn dataCell] setVerticalCentering:YES];