Изображение кнопки «Назад» для UIBarButtonItem имеет странный дефект на дисплее Retina iPhone - PullRequest
1 голос
/ 19 марта 2012

Я использую метод appearance с UIBarButtonItem для настройки фоновых изображений кнопки «Назад», но на дисплее iPhone Retina при использовании изображения появляется странная проблема.

Вот примеркнопка без ретины;вы увидите, что все выглядит хорошо:

enter image description here

Однако версия Retina выглядит не так.Похоже, что несколько верхних пикселей изображения снова появляются внизу:

enter image description here

Кто-нибудь еще видел это раньше?Как вы это исправили?

Вот код, который я использую в моем appDelegate для настройки кнопки возврата UIBarButtonItem:

UIImage *backButton = [[UIImage imageNamed:@"backButton"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 15, 5,5)];

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButton forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

Ответы [ 2 ]

2 голосов
/ 19 марта 2012

Разобрался. Мое изображение было только 27 пикселей в высоту; высота должна быть 30 пикселей.

Я не заметил проблемы на моих прямоугольных изображениях UIBarButtonItem, потому что прямоугольники могут масштабироваться без проблем - но с помощью заостренного изображения UIBarButtonItem вы не можете изменить масштаб, не показывая странные артефакты с левой стороны от заостренного стрелка.

tl; dr: Сделайте ваши изображения UIBarButtonItem высотой 30 и 60 пикселей для размеров 1x и @ 2x соответственно.

0 голосов
/ 26 декабря 2013

Следующий код из моего проекта, у меня нет проблем. попробуйте использовать приведенный ниже фрагмент кода

UIImage* blueBack = [UIImage imageNamed:@"back.png"];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:blueBack forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
...