Могу ли я центрировать элемент UIToolbar?

Я помещаю ярлык на UIToolbar (за этот совет: Добавление UILabel в UIToolbar).

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

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

Спасибо!

Ответ 1

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

Ответ 2

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

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

Ответ 3

Чтобы центрировать текст/заголовок на панели инструментов, вы можете использовать простой 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 subview 
[self.toolbar addSubview:labelTitle];
[labelTitle release];
labelTitle = nil;

Ответ 4

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

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

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