天天看點

修改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、正确使用:

// 細節: 本界面上設定, 下個界面上顯示
    // 方式一
    self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"傳回" style:UIBarButtonItemStylePlain target:nil action:nil];
    // 方式二
    UIBarButtonItem * backButtonItem = [[UIBarButtonItem alloc] init];
    backButtonItem.title = @"傳回";
    self.navigationItem.backBarButtonItem = backButtonItem;
           

修改傳回鍵的顔色

修改navigationController傳回按鈕顔色和文字引言

由圖可以看出,想要修改傳回鍵的顔色可以:

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傳回按鈕顔色和文字 

繼續閱讀