Да, 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 пикселя вниз (НО изменяет высоту изображения, чтобы оно выглядело сжатым).