UIBarButtonItem/initWithImage:
обычно используются для создания знаковых кнопок - не кнопки, которые имеют текст в них.
Если вы хотите изменить внешний вид обычного текстового UIBarButtonItem
, вам просто нужно установить фоновое изображение элемента панели. Таким образом, вам не нужно иметь изображения для каждой кнопки, содержащие текст кнопки.
Docs: - (void)setBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics
Вы также можете установить это приложение шириной по вызывающему setBackgroundImage: на UIBarButtonItem
внешний вид прокси.
И, наконец, обратите внимание, что вам, вероятно, потребуется создать изображение с возможностью изменения размера, чтобы перейти к setBackgroundImage. Это позволит вашему одиночному изображению вмещать любой размер кнопки. См. UIImage/resizeableImageWithCapInsets:resizingMode:
(iOS6) или UIImage/stretchableImageWithLeftCapWidth:topCapHeight:
(pre iOS6)
Вы, безусловно, можете сделать то, что предлагает @Wain, но есть недостатки. Во-первых, ваш обработчик печати больше не будет отправлять UIBarButtonItem в качестве «отправителя». Возможно, это не так, пока у вас нет обычного обработчика, который вдруг должен определить, является ли отправитель UIBarButtonItem или UIButton, или если вы хотите представить UIPopoverController против этого BarButtonItem (но у вас есть только ссылка UIButton ...)
Awesome. Благодаря! – Jason