UIToolbar UIBarButtonItem Вопрос выравнивания - PullRequest
3 голосов
/ 02 мая 2010

Мне нужно создать панель UIToolbar с двумя элементами UIBarButtonItems. 1-я кнопка должна быть в центре, а 2-й элемент должен быть выровнен по правому краю.

Я понимаю и использую Гибкий интервал, и он прекрасно работает, когда мне нужно балансировать кнопки на панели UIToolbar, но, имея только две кнопки, я не могу точно отцентрировать среднюю кнопку. Я даже инициализировал массив view.toolbarItems с

NSArray *items = [[NSArray alloc] initWithObjects:fixed, flex, center_button, flex, right_button, nil];

и установите fixed.width = right_button.width ... но, тем не менее, кнопка center_button никогда не будет идеально отцентрирована.

Ответы [ 3 ]

9 голосов
/ 07 июня 2011

Недавно у меня возникла та же проблема, и я решил ее, создав своего рода фальшивый UIBarButtonItem. Ключ к получению правого выравнивания состоял в том, чтобы установить для свойства possibleTitles левой и правой кнопок панели одинаковое значение, например:

[right_button setPossibleTitles:[NSSet setWithObject:@"Abc"]];

// Create this fake (plain) button item on the left, to correct the alignment.
UIBarButtonItem *fake = [[[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
[fake setEnabled:NO];
[fake setPossibleTitles:right_button.possibleTitles];

// The array for your toolbar items
NSArray *items = [[NSArray alloc] initWithObjects:fake, flex, center_button, flex, right_button, nil];

Поздний ответ ... Я надеюсь, что это все еще может помочь.

1 голос
/ 28 сентября 2010

Проблема в том, что свойство ширины UIBarButtonItem, похоже, всегда равно нулю. (Я думаю, это потому, что система использует ноль в качестве флага для того, чтобы сделать его «подходящей» шириной. То же самое можно сделать и с гибким пробелом.) Вам, возможно, придется использовать изображение в правой кнопке (чтобы Кстати, вы знаете, какой будет его ширина), и замените фиксированное пространство на «левую кнопку», в которой используется прозрачное изображение того же размера, что и правая кнопка.

0 голосов
/ 19 мая 2010

Похоже, либо ваша панель инструментов имеет не всю ширину экрана, либо ваша кнопка center_button не центрирована в своем кадре. Вы пробовали установить center_button.imageInsets?

...