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

Как вы настраиваете рамки или вертикальное выравнивание объекта UIBarButtonItem, содержащегося в экземпляре UIToolbar?

Горизонтальное позиционирование UIBarButtonItems не представляет проблемы, я могу просто проложить пространство с помощью фиксированных/гибких элементов пространства. Однако я не могу настроить элемент панели инструментов по вертикали. UIToolbar не имеет свойства выравнивания, а UIBarButtonItem не имеет возможности установить свой фрейм.

Мне нужно сделать это, потому что мы используем сочетание пользовательских значков, созданных с помощью initWithImage, и стандартные значки, созданные с помощью initWithBarButtonSystemItem. Пользовательские значки не центрируются должным образом (они смещены вверх, относительно системных значков, которые центрированы правильно), поэтому панель инструментов выглядит неудобно.

4b9b3361

Ответ 1

Да, imageInsets отлично работает для меня!

 float topInset = 4.0f;
 myUIBarButton.imageInsets = UIEdgeInsetsMake(topInset, 0.0f, -topInset, 0.0f); 

перемещает изображение на 4 пикселя вниз.

ИЗБЕГАЙТЕ ЭТО:

 float topInset = 4.0f;
 myUIBarButton.imageInsets = UIEdgeInsetsMake(topInset, 0.0f, 0.0f, 0.0f); 

перемещает изображение на 4 пиксела вниз (НО изменяет высоту изображения, чтобы он выглядел сжатым).

Ответ 2

imageInsets свойство UIBarItem?

Ответ 3

Кажется, это не простой, чистый способ сделать это, поэтому я пошел с уродливым, но функциональным взломом: гнездование. Я запустил еще один UIToolbar, содержащий кнопку, в UIView, который я установил как UIBarButtonItem на исходной панели инструментов, используя initWithCustomView. Второй UIToolbar может свободно перемещаться внутри UIView, и фактический значок сохраняет все свойства UIBarButtonItem.

Тьфу.