iOS學習——更改導航欄的返回按鈕的標題與顏色


轉載自:修改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 - 偏移用於文本陰影


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM