У меня есть NSTableView
с несколькими текстовыми столбцами. По умолчанию dataCell
для этих столбцов является экземпляром класса NSTextFieldCell
от Apple, который делает все виды замечательных вещей, но рисует текст, выровненный по верху ячейки, и я хочу, чтобы текст располагался вертикально по центру клетка.
В NSTextFieldCell
имеется внутренний флаг, который можно использовать для вертикального центрирования текста, и он прекрасно работает. Однако, поскольку это внутренний флаг, его использование не санкционировано Apple, и он может просто исчезнуть без предупреждения в будущем выпуске. В настоящее время я использую этот внутренний флаг, потому что он прост и эффективен. Очевидно, что Apple потратила некоторое время на реализацию этой функции, поэтому мне не нравится идея ее повторной реализации.
Итак, у меня такой вопрос: Как правильно реализовать что-то, что ведет себя точно так же, как NStextFieldCell от Apple, но рисует вертикально центрированный текст, а не выровненный по верху?
Для справки, вот мое текущее "решение":
@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];