Как мне управлять макетом при использовании setToolbarItems? - PullRequest
0 голосов
/ 11 августа 2011

Я пытаюсь добавить 2 UIBarButtonItem s на нижнюю панель инструментов программно из UIViewController. Прямо сейчас я создаю кнопки, добавляю их к NSArray, а затем вызываю [self setToolbarItems:buttonArray animated:YES]. Это добавит кнопки в левый нижний угол панели инструментов, прямо рядом друг с другом. Что я хочу сделать, это добавить одну кнопку в левом нижнем углу панели инструментов, а другую кнопку в правом нижнем углу. Как мне это сделать?

Ответы [ 4 ]

5 голосов
/ 11 августа 2011

Ваш toolBarItems должен выглядеть примерно так:

UIBarButtonItem *firstButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:self action:@selector(someSelector)];
UIBarButtonItem *secondButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(someSelector)];

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

self.toolbarItems = [NSArray arrayWithObjects:firstButton, flexibleSpace, secondButton,nil];

[firstButton release], [secondButton release], [flexibleSpace release];

Это даст вам что-то вроде этого:

enter image description here

2 голосов
/ 11 августа 2011

Вам необходимо использовать системный элемент кнопки панели UIBarButtonSystemItemFlexibleSpace

UIBarButtonItem *leftButton; // set that
UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *rightButton; // set that

NSArray *items = [NSArray arrayWithObjects:leftButton, flexibleSpace, rightButton, nil];
[toolbar setItems:items];

[flexibleSpace release];
// release the other two if necessary

Вы также можете использовать системный элемент кнопки панели UIBarButtonSystemItemFixedSpace, если хотите вручную управлять интервалом, задав для него свойство width.

0 голосов
/ 22 мая 2017

Похоже, что iOS не обновляет расположение панелей инструментов при повороте устройства, если элементы панели инструментов добавляются с использованием кода, а не определены в раскадровке.

Решение состоит в добавлении обработчика viewWillTransitionи установите VC's toolbaritems nil, а затем вернитесь к нужным элементам панели кнопок.

// method within a UIViewController class

// set to nil so that iOS places buttons correctly on a rotation
tools = ... // an [UIBarButtonItem]
toolbarItems = nil
setToolbarItems(tools, animated: false)

Если ваша панель инструментов была [FlexibleSpace] [UIBarButtonItem] [FlexibleSpace], тогда этот обработчик будет держать BarButtonItem вцентр его панели инструментов при повороте устройства.

0 голосов
/ 11 августа 2011

Вы можете добавить элемент кнопки системной панели с именем UIBarButtonSystemItemFlexibleSpace между вашими кнопками.Это подтолкнет их в стороны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...