Цвет оттенка iOS 7 - UINavigationItem backBarButtonItem не оттеняет, когда initWithImage:
У меня возникли проблемы с нанесением цвета оттенка элемента кнопки панели навигации элемента навигации, когда я создаю элемент кнопки панели с помощью [UIBarButtonItem initWithImage: style: target: selector:].
Является ли использование изображения в качестве контекста обратной связи контроллера больше не подходит? Кажется, я не вижу никаких указаний в 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.
Ответы
Ответ 1
Установите режим рендеринга изображений на UIImageReneringModeAlwaysTemplate
(этот вопрос рассматривается примерно в 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]];
Ответ 2
Вы должны пойти и посмотреть видео WWDC:
Настройка внешнего вида приложений для iOS 7 (сеанс 214, WWDC 2013)
Здесь многое изменилось.
Например, есть новый API для UIBarButton
Изображение:
@property(nonatomic,retain) UIImage *backIndicatorImage;
@property(nonatomic,retain) UIImage *backIndicatorTransitionMaskImage;
(Изображение маски определяет, где заголовок заголовка отключается, когда он скользит под обратным изображением кнопки во время перехода поп-регулятора вида. Он должен быть установлен. Если он не установлен, установленный вами backIndicatorImage игнорируется.)
Но на самом деле, просто посмотрите видео (часть, о которой я говорю, где-то около минут 14:00 - 16:00, но все видео интересно)