2010-03-24 6 views
10

Я помещаю ярлык на UIToolbar (за этот совет: Adding a UILabel to a UIToolbar).Могу ли я центрировать элемент UIToolbar?

Но на панели инструментов есть кнопка с левой стороны, и поэтому гибкие пространства бросают ярлык с центра, где я бы хотел. Могу ли я каким-либо образом сосредоточить этот элемент панели инструментов так, чтобы он оставался центрированным на панели инструментов?

(уже пытались балансировать кнопку с фиктивным фиксированным пространством, ни кости.)

Спасибо!

ответ

3

Простейшим способом было бы поставить ярлык выше в его родительском представлении и обосновать его там.

+0

Благодаря другой-Бен, это был мой план Б. :) метод –

+0

Эрикс является выше и намного проще в реализации. – titaniumdecoy

+1

Метод EricS является «статическим» и не работает при изменении ориентации – Undolog

35

Добавьте гибкий элемент пространства слева и справа от вашего центра, как и вы. Затем добавьте элемент фиксированного пространства в конец и установите ширину любой ширины левой кнопки - где-то около 28 пикселей.

UIBarButtonItem *fixedItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:NULL] autorelease]; 
fixedItem.width = 28; 
+7

Это должен быть принятый ответ. – titaniumdecoy

+2

Это предполагает, что системный шрифт никогда не изменится (он имеет несколько раз), и пользователь никогда не установит шрифт разного размера. Он также игнорирует локализацию названия вашей кнопки, имеющую разную ширину. –

6

Чтобы отцентрировать текст/название на панели инструментов вы можете использовать простой UILabel как смотрите ниже:

UILabel *labelTitle = [[UILabel alloc] init]; 
labelTitle.font =[UIFont fontWithName:@"Helvetica-Bold" size:18]; 
labelTitle.backgroundColor = [UIColor clearColor]; 
labelTitle.textAlignment = UITextAlignmentCenter; 
labelTitle.userInteractionEnabled = NO; 
labelTitle.text = @"Your Title"; 
[labelTitle sizeToFit]; 
CGRect labelTitleFrame = labelTitle.frame; 
labelTitleFrame.size.width = self.toolbar.bounds.size.width; 
labelTitleFrame.origin.y = (self.toolbar.bounds.size.height - labelTitleFrame.size.height)/2; 
labelTitle.frame = labelTitleFrame; 
labelTitle.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
// Just add UILabel like UIToolBar's subview 
[self.toolbar addSubview:labelTitle]; 
[labelTitle release]; 
labelTitle = nil; 
+0

Этот метод работает правильно, когда вы меняете ориентацию и когда есть кнопки со стрелками влево или вправо – Undolog

0

Да, мы можем центрировать элемент панели инструментов просто поставить два гибкое пространство на панели инструментов, как:

UIBarButtonItem *flexibaleSpaceBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 

toolbar.items = [NSArray arrayWithObjects:loginButton,flexibaleSpaceBarButton,toolBarLabel,flexibaleSpaceBarButton, nil];