Подтвердить что ты не робот

Как выровнять UIBarButtonItem в UIToolbar в универсальном приложении iOS?

Я хочу добавить два экземпляра UIBarButtonItem в UIToolbar в моем универсальном приложении iOS, в котором первый элемент находится на левом краю панели инструментов, а второй - в центре. Однако похоже, что это невозможно сделать в интерфейсе Builder, , поскольку автоматический макет не поддерживает принудительные ограничения в классе UIBarButtonItem из-за того, что он не является подклассом UIView.

Обратите внимание, что я не хочу ставить первый на левом краю, а второй - на правый край - мне нужно поместить вторую кнопку в центр. Кроме того, у меня нет плана использовать третью кнопку, чтобы выровнять их как влево, в центре, так и вправо с равным интервалом.

Можно ли добавить такое ограничение в этой ситуации в раскадровке? Я использую Xcode 6 beta 5.

4b9b3361

Ответ 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];