Горизонтальное расположение UIBarButtonItems не является никакой проблемой, я могу просто заполнить пространство фиксированными/гибкими объектами пространства. Однако я, может казаться, не корректирую объект панели инструментов вертикально. UIToolbar не имеет никакого свойства выравнивания, и UIBarButtonItem не имеет никакого способа установить его кадр.
Я должен сделать это, потому что мы используем соединение пользовательских значков, созданных с помощью initWithImage и стандартных значков, созданных с initWithBarButtonSystemItem. Пользовательские значки не центрируются правильно (они смещаются вверх относительно системных значков, которые центрируются правильно), таким образом, панель инструментов выглядит неловкой.
Не похоже простой и понятный способ сделать это, поэтому я пошел с уродливым, но функциональным приемом: вложением. Я вставил еще один UIToolbar, содержащий кнопку, в UIView, который я установил как UIBarButtonItem на исходной панели инструментов с помощью initWithCustomView. Второй UIToolbar может свободно перемещаться внутри UIView, а фактический значок сохраняет все свойства UIBarButtonItem.
Тьфу.
Да, 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 пикселя вниз (НО изменяет высоту изображения, так что оно выглядит сжатым).