NSTabViewItem 中的水平居中标签
Horizontally center label in NSTabViewItem
我创建了 NSTabViewItem
的子类,以便我可以为选项卡视图项指定特定的宽度,如 this answer 中所示。这很好用,但是选项卡的标签不是水平居中的,因此文本右侧有额外的填充。如何在标签边界内将文本居中,或者如何在固定宽度内将文本正确居中 NSTabViewItem
?
您可以覆盖 "drawLabel:inRect:" 函数并在此处提供适当的矩形以供绘图。喜欢
(void)drawLabel:(BOOL)shouldTruncateLabel
inRect:(NSRect)labelRect{
//find your label size
NSDictionary* attr = [NSDictionary dictionaryWithObjectsAndKeys:
self.tabView.font,NSFontAttributeName,
nil];
NSSize labelSize = [self.label sizeWithAttributes:attr];
//modify your labelRect here.....
labelRect.origin.x += floor((labelRect.size.width - labelSize.width)/2)
labelRect.size.width = labelSize.width;
//call super
[super drawWithFrame:shouldTruncateLabel inRect:labelRect];
}
我创建了 NSTabViewItem
的子类,以便我可以为选项卡视图项指定特定的宽度,如 this answer 中所示。这很好用,但是选项卡的标签不是水平居中的,因此文本右侧有额外的填充。如何在标签边界内将文本居中,或者如何在固定宽度内将文本正确居中 NSTabViewItem
?
您可以覆盖 "drawLabel:inRect:" 函数并在此处提供适当的矩形以供绘图。喜欢
(void)drawLabel:(BOOL)shouldTruncateLabel
inRect:(NSRect)labelRect{
//find your label size
NSDictionary* attr = [NSDictionary dictionaryWithObjectsAndKeys:
self.tabView.font,NSFontAttributeName,
nil];
NSSize labelSize = [self.label sizeWithAttributes:attr];
//modify your labelRect here.....
labelRect.origin.x += floor((labelRect.size.width - labelSize.width)/2)
labelRect.size.width = labelSize.width;
//call super
[super drawWithFrame:shouldTruncateLabel inRect:labelRect];
}