Как выровнять UIBarButtonItem в UIToolbar в универсальном приложении iOS?
Я хочу добавить два экземпляра UIBarButtonItem
в UIToolbar
в моем универсальном приложении iOS, в котором первый элемент находится на левом краю панели инструментов, а второй - в центре. Однако похоже, что это невозможно сделать в интерфейсе Builder, , поскольку автоматический макет не поддерживает принудительные ограничения в классе UIBarButtonItem
из-за того, что он не является подклассом UIView
.
Обратите внимание, что я не хочу ставить первый на левом краю, а второй - на правый край - мне нужно поместить вторую кнопку в центр. Кроме того, у меня нет плана использовать третью кнопку, чтобы выровнять их как влево, в центре, так и вправо с равным интервалом.
Можно ли добавить такое ограничение в этой ситуации в раскадровке? Я использую Xcode 6 beta 5.
Ответы
Ответ 1
Вы можете сделать все это в своей раскадровке.
Выберите Bar Button Item
в библиотеке объектов и перетащите его в Toolbar
. Добавьте a Flexible Space Bar Button Item
справа. Добавьте свой второй Bar Button Item
с правой стороны. Затем добавьте второй Flexible Space Bar Button Item
с правой стороны.
Результат будет выглядеть так в Interface Builder:
![enter image description here]()
При необходимости вы можете добавить дополнительный Fixed Space Bar Button Item
на правый край вашего Toolbar
, чтобы убедиться, что ваш второй Bar Button Item
действительно центрирован.
Пользователь lxt дает еще один пример этого ответа для аналогичного вопроса здесь.
Изменить: Убедитесь, что ваш UIToolbar имеет хорошие ограничения перед продолжением!
Ответ 2
вы можете сделать это программно
UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithTitle:@"item1" style:UIBarButtonItemStylePlain target:self action:nil];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"item2" style:UIBarButtonItemStylePlain target:self action:nil];
UIBarButtonItem *item3 = [[UIBarButtonItem alloc] initWithTitle:@"item3" style:UIBarButtonItemStylePlain target:self action:nil];
self.toolbarItems = [NSArray arrayWithObjects: item1, flexible, item2, flexible, item3, nil];
проверьте эту ссылку, если вы хотите получить более подробную информацию
Как разместить UIBarButtonItem в правой части UIToolbar?
Ответ 3
Я думаю, вам стоит попробовать элемент Flexible bar button space и для более занижения, я разделяю ссылку, поэтому посмотрите, возможно, это поможет вам
UIToolbar и элементы Flexable/Fixed bar button
Ответ 4
Код для добавления панели инструментов:
Здесь фиксированная ширина может быть переменной. Соответственно, вы можете держать его настолько, насколько хотите, чтобы удерживать вторую кнопку в центре.
UIBarButtonItem *fixedItemSpaceWidth = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
fixedItemSpaceWidth.width = 200.0f; // or whatever you want
UIBarButtonItem *doneBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonAction:)];
UIBarButtonItem *cancelBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelButtonAction:)];
// Initialise toolabr
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height-44, 320, 44)];
//toolbar.barStyle = UIBarStyleBlack;
toolbar.items = [NSArray arrayWithObjects:cancelBarButton,fixedItemSpaceWidth,doneBarButton, nil];
[self.view addSubview:toolbar];