NSTabViewItem中的水平居中标签

时间:2015-03-26 01:08:53

标签: macos cocoa nstabview

我已经创建了NSTabViewItem的子类,以便我可以为标签视图项指定特定宽度,如this answer中所示。这样做效果很好,但是标签的标签不是水平居中的,所以文本右侧有额外的填充。如何将文本置于标签边界内,或者如何将文本正确地置于固定宽度NSTabViewItem内?

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以覆盖“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];
 }