Есть ли «правильный» способ заставить NSTextFieldCell рисовать вертикально центрированный текст?
у меня естьNSTableView
с несколькими текстовыми столбцами. По умолчаниюdataCell
для этих столбцов - пример AppleNSTextFieldCell
Класс, который делает все виды замечательных вещей, но он рисует текст, выровненный по верху ячейки, и я хочу, чтобы текст был вертикально центрирован в ячейке.
Есть внутренний флаг вNSTextFieldCell
это может быть использовано для вертикального центрирования текста, и это прекрасно работает. Однако, поскольку это внутренний флаг, его использование не санкционировано Apple, и он может просто исчезнуть без предупреждения в будущем выпуске. В настоящее время я использую этот внутренний флаг, потому что он прост и эффективен. Очевидно, что Apple потратила некоторое время на реализацию этой функции, поэтому мне не нравится идея ее повторной реализации.
Так; мой вопрос такой:What is the right way to implement something that behaves exactly like Apple's NStextFieldCell, but draws vertically centered text instead of top-aligned?
Для справки, вот мое текущее «решение»:
@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];