2014-11-14 6 views
0

Что я хотел бы сделать, это изменить высоту кнопки «Назад». Однако, насколько я понимаю, единственным вариантом для изменения является ширина. Итак, я думал, что создаю пользовательскую кнопку возврата с моим собственным, меньшим, изображением. Теперь я сделал это с помощью метода viewDidLoad на код ниже:Пользовательская кнопка с изображением

//Setup navigation bar 
     navigationController?.navigationItem.backBarButtonItem = UIBarButtonItem(image:UIImage(named:"back_arrow.png"), style:UIBarButtonItemStyle.Plain, target:nil, action:nil) 
     navigationController?.navigationItem.backBarButtonItem!.title = "" 

Однако кнопка назад остается синим, большим, и имеет название «Back». Как я могу заставить этот код работать правильно? Отладчик говорит, что он работает, но ничего не меняет.

ответ

3

Для цвета вам необходимо установить цвет оттенка на navBar, также вы можете установить navigationItem.backBarButtonItem на nil и использовать leftbarButtonItem с пользовательским изображением кнопки.

+0

Тогда я теряю запас назад функциональность backBarButton. Я просто хочу изменить изображение кнопки на задней панели, избавиться от названия и сохранить функциональность назад. – steventnorris

+0

да, но вы можете сделать это в любом случае в обработчике кнопки слева. [Self.navigationController popToRootViewController] – Puran

5

Я собираюсь показать вам, как это сделать во всем приложении, а не только на одной странице.

Чтобы изменить изображение по умолчанию кнопки возврата, поместите в ваше приложение делегат didFinishLaunchingWithOptions::

Swift:

let backArrowImage = UIImage(named: "customImage") 
let renderedImage = backArrowImage?.imageWithRenderingMode(.AlwaysOriginal) 
UINavigationBar.appearance().backIndicatorImage = renderedImage 
UINavigationBar.appearance().backIndicatorTransitionMaskImage = renderedImage 

Obj-C:»

UIImage *backArrowImage = [UIImage imageNamed:@"customImage"]; 
UIImage *renderedImage = [backArrowImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
[UINavigationBar appearance].backIndicatorImage = renderedImage; 
[UINavigationBar appearance].backIndicatorTransitionMaskImage = renderedImage; 

Чтобы удалить текст «Назад» с помощью кнопки, добавьте эту категорию в файл AppDelegate.m (o г собственная категория):

Не знаю, как это сделать в Swift еще, так вот версия Obj-C:

@implementation UINavigationItem (LuxeCustomization) 

/** 
Removes text from all default back buttons so only the arrow or custom image shows up 
*/ 
-(UIBarButtonItem *)backBarButtonItem 
{ 
    return [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil]; 
} 

@end 
+0

Чтобы удалить заголовок кнопки «Назад» в глобальном масштабе в swift ... см. Http://stackoverflow.com/a/33707584/6059628 –

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