2013-09-26 2 views
10

У меня возникли проблемы с нанесением цвета оттенка элемента кнопки панели навигации элемента навигации, когда я создаю элемент кнопки панели с помощью [UIBarButtonItem initWithImage: style: target: селектор:].iOS 7 Tint Color - UINavigationItem backBarButtonItem не оттеняет, когда initWithImage:

Использует изображение в качестве контекста диспетчера представлений, больше не подходит? Кажется, я не вижу никаких указаний в HIG, или где это было устаревшим или обескураженным.

Вот мой код:

UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"camera-navigation_item_back"] 
                    style:UIBarButtonItemStyleBordered 
                   target:nil 
                   action:nil]; 
[navItem setBackBarButtonItem:barButtonItem]; 

IOS 7 Результат:

iOS 7

IOS 6 Результат:

iOS 6


EDIT: Если я пытаюсь использовать один из элементов системы (плюс знак, корзина для мусора и т. Д.) В качестве моей кнопки, Apple заменяет изображение для заголовка «Назад». Это фактически то же самое поведение в IOS 6 и 7.

ответ

11

Установите режим рендеринга изображения на UIImageReneringModeAlwaysTemplate (вверху IC покрывается около 33:00 в WWDC видео, упомянутого в предыдущем ответе):

UIImage *backButtonImage = [UIImage imageNamed:@"imageName.png"]; 
backButtonImage = [backButtonImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 
UIBarButtonItem * backButton = [[UIBarButtonItem alloc] 
           initWithImage:backButtonImage 
           style:UIBarButtonItemStylePlain 
           target:nil 
           action:nil]; 
[[self navigationItem] setBackBarButtonItem:backButton]; 
[[[self navigationItem] backBarButtonItem] setTintColor:[UIColor redColor]]; 

Последняя строка не является необходимым, если вы установите tintColor глобально в AppDelegate.h:

[[UIBarButtonItem appearance] setTintColor:[UIColor redColor]]; 
+0

'UIImageRenderingModeAlwaysTemplate' решил мою проблему. Спасибо! – edelaney05

+0

Да, это работает для меня –

3

Вы должны идти вперед и смотреть WWDC видео: Настройка внешнего вида вашего приложения для IOS 7 (сессия 214, WWDC 2013)

Многое изменилось Вот. Например есть новый API для UIBarButton изображения:.

@property(nonatomic,retain) UIImage *backIndicatorImage; 
@property(nonatomic,retain) UIImage *backIndicatorTransitionMaskImage; 

(Маска изображения определяет, где Bar Название отрезано, когда он скользит под кнопку назад изображение во время вида контроллера поп перехода Это должно быть Если он не установлен, установленный вами backIndicatorImage игнорируется.)

Но на самом деле, просто посмотрите видео (часть, о которой я говорю, где-то около минут 14:00 - 16:00, но все видео является интересным)

+0

Там определенно спасибо за эту замечательную информацию на этой сессии WWDC. Но это не касается проблемы, с которой я столкнулся - я не хочу настраивать обратный шеврон навигационной панели, я хочу использовать изображение камеры в качестве контекстного ключа для того, что произойдет, когда пользователь перейдет назад. – edelaney05

Смежные вопросы