引言
在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、正确使用:
// 細節: 本界面上設定, 下個界面上顯示
// 方式一
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 - 偏移用于文本陰影
參考: >> iOS 隐藏/去掉 導航欄傳回按鈕中的文字 >> 自定義iOS7導航欄背景,标題和傳回按鈕文字顔色 >> ios7 修改navigationController傳回按鈕顔色和文字