Пользовательское изображение для кнопки UINavigation Back в iOS 7
У меня есть пользовательский UIBarButtonItem
образ, который отлично работает в iOS 6.1. Но iOS 7 имеет tintColor
и накладывает этот цвет на мое изображение. Если я установил tintColor
в [UIColor clearColor]
, кнопка не будет отображаться вместе.
Как я могу открыть свою кнопку в iOS 7, как в iOS 6? Пожалуйста, помогите?
![iOS 6.1]()
![iOS 7]()
Ответы
Ответ 1
Попробуйте установить UIBarButtonItem
следующим образом в ios7: -
UIImage *temp = [[UIImage imageNamed:@"theImage"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithImage:temp style:UIBarButtonItemStyleBordered target:self action:@selector(action)];
Вот оригинальный пост в apple Dev center обсуждение форумов
Для поддержки как версии iOS7, так и ниже, вы проверяете system-version
и устанавливаете код следующим образом: -
UIImage *temp=nil;
if([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0)
{
temp = [UIImage imageNamed:@"btn-back.png"];
}
else
{
temp = [[UIImage imageNamed:@"btn-back.png"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];
}
Ответ 2
Вы должны использовать внешний вид в UINavigationBar, чтобы глобально установить пользовательскую кнопку возврата.
[UINavigationBar appearance].backIndicatorImage = customBackButton;
[UINavigationBar appearance].backIndicatorTransitionMaskImage = customBackButton;
Ответ 3
Следующее, по-видимому, немного более полезно для людей, которые не хотят связываться с существующим целевым действием и т.д. Просто скопируйте и вставьте. Кроме того, это заставляет iOS использовать ваше изображение со всеми его лотками - в отличие от простого использования шаблона/впечатления от изображения.
- (void)setCustomNavigationBackButton
{
UIImage *backBtn = [UIImage imageNamed:@"arrow"];
backBtn = [backBtn imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[email protected]"";
self.navigationController.navigationBar.backIndicatorImage = backBtn;
self.navigationController.navigationBar.backIndicatorTransitionMaskImage = backBtn;
}
arrow
- это имя вашего изображения.
Ответ 4
Попробуйте так:
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStyleBordered target:nil action:nil];
self.navigationController.navigationBar.backIndicatorImage = [UIImage imageNamed:@"yourImageName.png"];
self.navigationController.navigationBar.backIndicatorTransitionMaskImage = [UIImage imageNamed:@"yourImageName.png"];
Это создаст маску изображения в глобальном цвете оттенка, который даст вам свой собственный значок. Не работает для цветных изображений.
Ответ 5
быстрая версия:
var backBtn = UIImage(named: "return_menu")
backBtn = backBtn?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
self.navigationController!.navigationBar.backIndicatorImage = backBtn;
self.navigationController!.navigationBar.backIndicatorTransitionMaskImage = backBtn;
Ответ 6
//ДОБАВЛЕНИЕ ИЗОБРАЖЕНИЯ К КНОПКЕ
UIButton *refreshButton = [UIButton buttonWithType:UIButtonTypeCustom];
[refreshButton setFrame:CGRectMake(0,0,30,30)];
refreshButton.userInteractionEnabled = YES;
[refreshButton setImage:[UIImage imageNamed:@"yourimage.jpg"] forState:UIControlStateNormal];
// ASSIGNING THE BUTTON WITH IMAGE TO BACK BAR BUTTON
UIBarButtonItem *refreshBarButton = [[[UIBarButtonItem alloc] initWithCustomView:refreshButton] autorelease];
self.navigationItem.leftBarButtonItem = refreshBarButton;