Расстояние между кнопками панели инструментов iPhone - PullRequest
8 голосов
/ 11 мая 2010

Есть ли способ равномерно распределить UIBarButtonItems на панели инструментов?

Ответы [ 3 ]

18 голосов
/ 11 мая 2010

Поместите элемент кнопки гибкого пробела между вашими UIBarButtonItems. Это довольно легко сделать в IB, посмотрите вниз на элементы управления.

Если вы хотите сделать это программно, этот код должен помочь:

UIBarButtonItem* button1 = [[UIBarButtonItem alloc] initWithTitle:@"Button1" style:UIBarButtonItemStyleBordered target:self action:@selector(button1Action)];
UIBarButtonItem* button2 = [[UIBarButtonItem alloc] initWithTitle:@"Button2" style:UIBarButtonItemStyleBordered target:self action:@selector(button2Action)];
UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[myToolbar setItems:[NSArray arrayWithObjects:button1, flexibleSpace, button2, nil]];
4 голосов
/ 11 мая 2010

Игнорировать ширину при предложении UIBarButtonItem; это неправильный подход, рекомендованный Apple, и он не будет работать, если вы захотите добавить дополнительные значки.

Правильный подход заключается в добавлении «Гибкого пространства» (технически еще одна кнопка!) Между каждой кнопкой. Вы видите это в Интерфейсном Разработчике, или это может быть добавлено непосредственно в код при необходимости.

2 голосов
/ 11 мая 2010

Да. Создайте UIBarButtonItem с помощью метода -initWithBarButtonSystemItem:, используя UIBarButtonSystemItemFlexibleSpace, и вставьте его между каждым из ваших реальных элементов панели инструментов. E.g.:

UIBarButtonItem *flexSpace = [[UIBarButton alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace];
myToolbar.items = [NSArray arrayWithObjects:buttonOne,flexSpace,buttonTwo,flexSpace,buttonThree,nil];
[flexSpace release];
...