Могу ли я центрировать элемент UIToolbar? - PullRequest
10 голосов
/ 24 марта 2010

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

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

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

Спасибо!

Ответы [ 4 ]

36 голосов
/ 31 декабря 2010

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

UIBarButtonItem *fixedItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:NULL] autorelease];
fixedItem.width = 28;
6 голосов
/ 14 апреля 2011

Для центрирования текста / заголовка на панели инструментов вы можете использовать простой 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;
4 голосов
/ 24 марта 2010

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

0 голосов
/ 27 сентября 2012

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

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

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