Фоновое изображение кнопки "Назад" не появляется до того, как оно коснется iOS 7
У меня возникают проблемы с [UIBarButtonItem appearance]
для фонового изображения кнопки назад.
Обычно (iOS 5 и iOS 6) мне удалось установить фоновое изображение задней кнопки следующим образом:
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Но в iOS 7 фоновое изображение не появляется на задней панели. Странно, что фоновое изображение на самом деле появляется, когда обратная кнопка была затронута один раз.
Я попытался установить изображение для всех состояний, чтобы проверить, использует ли iOS 7 какое-то новое состояние для нетронутой кнопки возврата, но это, похоже, не так.
Есть ли у вас какая-то идея, что я делаю неправильно?
Ответы
Ответ 1
Я искал эту проблему и обнаружил, что вы не единственный, у кого такая же проблема. Есть много других, которые сталкиваются с той же проблемой с UIAppearance
. Это доказательства (чтобы объяснить вам ваш клиент):
В этом случае вы можете выполнить ответ, предоставленный во второй ссылке.
Вы можете установить свойство backIndicatorImage
на UINavigationBar
на пользовательское изображение или изменить цвет backIndicatorImage
, установив свойство tintColor
на UINavigationBar
.
Вы можете создать пользовательский UIBarButtonItem
и вручную назначить его как UINavigationItem
leftBarButtonItem
.
Ответ 2
Решение, которое сделает фоновый рисунок корректным на iOS7, находится в пользовательской кнопке OS 7 OS. Он подгоняет метод исправления ошибки Apple (которая заключается в том, что они забывают вызвать setNeedsDisplay на закрытом представлении при изменении фонового изображения). Поездка без полей, вероятно, лучше, если это возможно, но swizzling действительно работает.
Ответ 3
попробуйте изменить цвет оттенка кнопки. В iOS 7 есть проблема в UIBarButton
Ответ 4
Я реализовал действительно красивое решение, которое работает под ios5 + здесь:
Элемент "Назад" , который странно исчезает в iOS7
Ответ 5
Для работы с ios7 вам необходимо использовать
UIImage *backButton = [[UIImage imageNamed:@"icon_back" resizableImageWithCapInsets:UIEdgeInsetsZero];
if ([UINavigationBar instancesRespondToSelector:@selector(setBackIndicatorImage:)]) {
[[UINavigationBar appearance] setBackIndicatorImage:backButton];
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:backButton];
}else{
//ios 5 and 6 code
}