我有NSTableView
几个文本列。默认情况下,dataCell
for these columns 是 AppleNSTextFieldCell
类的一个实例,它做了各种奇妙的事情,但它绘制的文本与单元格顶部对齐,我希望文本在单元格中垂直居中。
其中有一个内部标志NSTextFieldCell
,可用于将文本垂直居中,并且效果很好。但是,由于它是一个内部标志,因此它的使用不受 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];