Горизонтально по центру метки в NSTabViewItem

Я создал подкласс NSTabViewItem так что я могу указать конкретную ширину для элемента представления вкладки, как показано в этом ответе. Это работает хорошо, однако метка для вкладки расположена не по центру, поэтому справа от текста есть дополнительные отступы. Как я могу центрировать текст в пределах границ метки, или как я могу правильно центрировать текст внутри фиксированной ширины NSTabViewItem?

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];
 }
Другие вопросы по тегам