【发布时间】:2015-03-26 01:08:52
【问题描述】:
我创建了NSTabViewItem 的子类,以便可以为选项卡视图项指定特定宽度,如this answer 中所示。这很好用,但是选项卡的标签不是水平居中的,因此文本右侧有额外的填充。如何在标签范围内将文本居中,或者如何在固定宽度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];
}
【讨论】:
labelRect.origin.x = labelRect.size.width / 2 - labelSize.width / 2,但由于某种原因,第一个选项卡的标签显示在其选项卡视图的左侧,第二个和第三个选项卡的标签显示在其左侧。