轉載自:修改navigationController返回按鈕顏色和文字
今天在做項目時遇到這個問題,試了很多方法都失敗了。最后終於找到正確的方案了,在這里分享給大家。
引言
在iOS開發過程中,NavigetionController(導航欄)算是比較常用的一種控件,而系統自帶的樣式有時候往往不是我們所需要的,這時候就要求我們必須自定義或修改一下。
修改返回鍵的標題
1、錯誤使用:以下三種方式都不能修改返回鍵的title(方式三可以修改NavigetionItem的leftBarButtonItem,但不能修改backBarButtonItem的樣式)
//最近iOS項目中要求導航欄的返回按鈕只保留那個箭頭,去掉后邊的文字,在網上查了一些資料,最簡單且沒有副作用的方法就是 [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault]; // 方式一 self.navigationItem.leftBarButtonItem.title = @"返回"; // 方式二 self.navigationItem.backBarButtonItem.title = @"返回"; // 方式三 UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(0, 0, 80, 49); [button setTitle:@"返回" forState:UIControlStateNormal]; [button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem * backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; self.navigationItem.backBarButtonItem = backButtonItem;
2、正確使用:需要注意的是,只有把自定義的item加在跳轉的地方才能生效讓下一個頁面的返回鍵標題為 返回。
// 細節: 本界面上設置, 下個界面上顯示 // 方式一 self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:nil action:nil]; // 方式二 UIBarButtonItem * backButtonItem = [[UIBarButtonItem alloc] init]; backButtonItem.title = @"返回"; self.navigationItem.backBarButtonItem = backButtonItem;
修改返回鍵的顏色

由圖可以看出,想要修改返回鍵的顏色可以:
self.navigationController.navigationBar.tintColor = [UIColor redColor];
注意:
最后說一下使用pushViewController切換到下一個視圖時,navigation controller按照以下3條順序更改導航欄的左側按鈕(本段摘自網絡):
1、如果B視圖有一個自定義的左側按鈕(leftBarButtonItem),則會顯示這個自定義按鈕;
2、如果B沒有自定義按鈕,但是A視圖的backBarButtonItem屬性有自定義項,則顯示這個自定義項;
3、如果前2條都沒有,則默認顯示一個后退按鈕,后退按鈕的標題是A視圖的標題;
擴展1:
// 設置導航條的色調 理解為"混合色" self.navigationController.navigationBar.barTintColor = [UIColor blackColor]; // 導航欄默認是半透明狀態 self.navigationController.navigationBar.backgroundColor = [UIColor blueColor]; // 左邊返回按鍵顏色 // 導航欄標題顏色 [self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}]; self.navigationController.navigationBar.translucent = NO;
擴展2:
UITextAttributeFont - 字體
UITextAttributeTextColor - 文字顏色
UITextAttributeTextShadowColor - 文字陰影顏色
UITextAttributeTextShadowOffset - 偏移用於文本陰影
UITextAttributeTextColor - 文字顏色
UITextAttributeTextShadowColor - 文字陰影顏色
UITextAttributeTextShadowOffset - 偏移用於文本陰影