J'ai un NSTableView
avec plusieurs colonnes de texte. Par défaut, les dataCell
pour ces colonnes est une instance de l'application Apple NSTextFieldCell
qui fait toutes sortes de choses merveilleuses, mais qui dessine du texte aligné sur le haut de la cellule, alors que je veux que le texte soit centré verticalement dans la cellule.
Il existe un drapeau interne dans NSTextFieldCell
qui peut être utilisé pour centrer verticalement le texte, et cela fonctionne à merveille. Cependant, comme il s'agit d'un indicateur interne, son utilisation n'est pas sanctionnée par Apple et il pourrait tout simplement disparaître sans avertissement dans une prochaine version. J'utilise actuellement ce drapeau interne parce qu'il est simple et efficace. Apple a manifestement consacré du temps à la mise en œuvre de cette fonctionnalité, et je n'aime pas l'idée de la réimplémenter.
Donc, ma question est la suivante : Quelle est la bonne façon d'implémenter quelque chose qui se comporte exactement comme le NStextFieldCell d'Apple, mais qui dessine du texte centré verticalement au lieu d'être aligné en haut ?
Pour mémoire, voici ma "solution" actuelle :
@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
Utilisé comme suit :
[[myTableColumn dataCell] setVerticalCentering:YES];