1. 程式人生 > >iOS navgationBar 的顏色相關設定

iOS navgationBar 的顏色相關設定

在iOS7下,預設導航欄背景,顏色是這樣的,接下來我們就進行自定義,如果你僅僅是更改一下背景和顏色,程式碼會很簡單,不需要很複雜的自定義View來替代leftBarItem


更改導航欄的背景和文字Color

方法一:

  1. //set NavigationBar 背景顏色&title 顏色
  2. [self.navigationController.navigationBar setBarTintColor:[UIColor colorWithRed:20/255.0 green:155/255.0 blue:213/255.0 alpha:1.0]];  
  3. [self.navigationController
    .navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],UITextAttributeTextColor,nil]];  
效果如下:

我們把背景改成了藍色,title文字改成了白色,是不是很簡單呢?NavigationBar極其push過去的子頁面也會是你修改後的背景顏色

方法二:

  1. //設定NavigationBar背景顏色
  2. [[UINavigationBar appearance] setBarTintColor:[UIColor
     redColor]];  
  3. //@{}代表Dictionary
  4. [[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]}];  
效果如下:

在導航欄使用背景圖片:

如果您的應用程式使用了自定義影象作為欄的背景,你需要提供一個“更大”的圖片,使其延伸了狀態列的後面。導航欄的高度現在是從44點(88畫素)更改為64點(128畫素)。
仍然可以使用了setBackgroundImage:方法來指定自定義影象的導航欄。下面是程式碼行設定背景圖片:

  1. [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nav_bg.png"] forBarMetrics:UIBarMetricsDefault];  

效果圖和上面的一樣,我就不貼出來了。

改變導航欄標題的字型

就像iOS 6,我們可以通過使用導航欄的“titleTextAttributes”屬性來自定義的文字樣式。可以指定字型,文字顏色,文字陰影顏色,文字陰影在文字標題偏移屬性字典,使用下面的文字屬性鍵:

UITextAttributeFont - 字型
UITextAttributeTextColor - 文字顏色
UITextAttributeTextShadowColor - 文字陰影顏色
UITextAttributeTextShadowOffset - 偏移用於文字陰影

  1. NSShadow *shadow = [[NSShadow alloc] init];  
  2. shadow.shadowColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8];  
  3. shadow.shadowOffset = CGSizeMake(01);  
  4. [[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:  
  5. [UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], NSForegroundColorAttributeName,  
  6. shadow, NSShadowAttributeName,  
  7. [UIFont fontWithName:@"HelveticaNeue-CondensedBlack" size:21.0], NSFontAttributeName, nil nil]];  

使用圖片作為導航欄標題

不想標題欄是光禿禿的文字?可以通過使用程式碼行中的影象或標誌取代它:簡單地改變titleview用來自定義,(適用於較低版本)

  1. self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"appcoda-logo.png"]];  

效果如下,我隨便用了個圖片,別介意:


新增多個欄按鈕專案

您希望新增導航欄的一側不止一個欄按鈕專案,無論是leftBarButtonItems和rightBarButtonItems 您在導航欄左側/右側指定自定義欄按鈕專案。比如你想新增一個攝像頭和一個共享按鈕右側的吧。您可以使用下面的程式碼:

  1. UIBarButtonItem *shareItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action: nil nil];  
  2. UIBarButtonItem *cameraItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action: nil nil];  
  3. NSArray *itemsArr = @[shareItem,cameraItem];  
  4. self.navigationItem.rightBarButtonItems = itemsArr;  


自定義後退按鈕的文字和顏色

通常情況下,我們使用UINavigationController時,push到的子頁面,左上角會是系統自動取值上一層父頁面的title名稱,預設情況是這樣,那麼我們該如何修改它呢?


左側顯示了父頁面的title:使用者登入,可是我們想修改成返回,方式有很多,舉些例子

方法一:

通過設定navigationItem的backBarButtonItem可以直接更換文字,【注意,要在父檢視的Controller中設定】如下:

  1. UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:nil action:nil];  
  2. self.navigationItem.backBarButtonItem = item;  
效果如下:

所有的子介面返回時都變成了我們定義的文字,如果不想顯示文字,直接"",就會單獨顯示一個系統的返回箭頭圖示,也是很清晰的感覺。

做到這裡發現文字顏色和背景有重複,那麼如何自定義其顏色呢?在iOS7,可以改變tintColor屬性,它提供了一個快速和簡單的方式,下面是一個示例程式碼片段:

  1. [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];  
效果如下:

全是系統的圖示和文字,這回看著舒服了,有木有?【除了後退按鈕,請注意,tintColor屬性影響所有按鈕標題和按鈕影象

最後舉個例子,另外一種實現自定義導航控制器返回按鈕,程式碼如下:

  1.  [self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor redColor],NSFontAttributeName:[UIFont systemFontOfSize:19.0]}];  
  2. self.title=[NSString stringWithFormat:@"第%lu頁",(unsigned long)self.navigationController.viewControllers.count];  
  3. //自定義返回按鈕
  4. UIImage *backButtonImage = [[UIImage imageNamed:@"fanhui.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(03000)];  
  5. [[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];  
  6. //將返回按鈕的文字position設定不在螢幕上顯示
  7. [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(NSIntegerMin, NSIntegerMin) forBarMetrics:UIBarMetricsDefault];  

效果如下:


最後說一下使用pushViewController切換到下一個檢視時,navigation controller按照以下3條順序更改導航欄的左側按鈕(本段摘自網路):

1、如果B檢視有一個自定義的左側按鈕(leftBarButtonItem),則會顯示這個自定義按鈕;
2、如果B沒有自定義按鈕,但是A檢視的backBarButtonItem屬性有自定義項,則顯示這個自定義項;
3、如果前2條都沒有,則預設顯示一個後退按鈕,後退按鈕的標題是A檢視的標題;

相關推薦

iOS navgationBar顏色相關設定

在iOS7下,預設導航欄背景,顏色是這樣的,接下來我們就進行自定義,如果你僅僅是更改一下背景和顏色,程式碼會很簡單,不需要很複雜的自定義View來替代leftBarItem 更改導航欄的背景和文字Color 方法一: //set NavigationBar

IOS 導航條 以及 狀態列顏色 相關設定

區域性導航欄顏色設定 //設定導航條顏色 美團導航欄顏色 self.navigationController.navigationBar.barTintColor = [UIColor c

iOS上 關於狀態列的相關設定(UIStatusBar)

1.基礎知識: ios上狀態列 就是指的最上面的20畫素高的部分狀態列分前後兩部分,要分清這兩個概念,後面會用到:前景部分:就是指的顯示電池、時間等部分;背景部分:就是顯示黑色或者圖片的背景部分;如下圖:前景部分為白色,背景部分為黑色 注意:這裡只涉及到ios7以及更高版本,低版本下面的講解可能無效

iOS如何把所有介面的狀態列的字型顏色設定為白色

第一步:在info.plist中新增一個欄位:view controller -base status bar 設定為NO 第二步:在一個所有介面都繼承的父類裡新增: if (IOS7_OR_LA

MyEclipse中背景顏色設定

定位在 edi col div ref spa 操作 -c cli 設置代碼編寫區域背景色的方法:Window——>Preferences——>General——>Editors——>TextEditors——>在Appearance co

secureCRT/VIM 設置顏色相關 debian

app 設置 修改 term ide crt 登錄 選擇 ash 1. 先保證在linux的終端裏看到顏色,配置~/.bashrc下面這些取消註釋: # You may uncomment the following lines if you want `ls‘ to b

iOS:UITableView相關

lar 對齊 options bject 技巧 pear uitable col rec UITableView用得較多,遇到的情況也較多,單獨記錄一篇。 一、零散的技巧 二、取cell 三、導航欄、TableView常見問題相關 一、零散的技巧 1、 cell的選

Linux串列埠程式設計詳解 linux串列埠相關設定函式

tcgetattr    函式用於獲取與終端相關的引數。引數fd為終端的檔案描述符,返回的結果儲存在termios 結構體中 http://baike.baidu.com/view/5644808.htm?fr=aladdin tcset

[iOS]推送相關兩點

討論一下最近遇到的兩個問題: 1. 推送接收 2.點選推送開啟APP時資料的處理 理想情況是: app處於活躍狀態,有推送到來,在應用內部應當彈出我們自己生成的提示。 app處於非活躍狀態,有推送到來,彈出系統生成的提示,點選提示會進入app並且顯示相關內容

Windows 上 SQLyog 連線 CentSO7 上 MySql 相關設定及常見問題

一、版本相關 1. CentOS7 # cat /etc/redhat-release  CentOS Linux release 7.4.1708 (AltArch)  2. Mysql # mysql -V mysql  Ver 14.14 Di

ios UIButton 文字透明度設定

[self.navBar.rightButton2 setTitleColor:TFCOLOR_0093FF forState:UIControlStateNormal]; [self.navBar.rightButton2 setTitleColor:[UIColor colorWithR

MFC進度條控制元件顏色設定

平臺:VS2013 內容介紹:建立進度條控制元件Progress Control控制元件並給它顏色的設定。在VC6.0裡頭可以直接用SendMessage函式就可以設定顏色了,但是在VS裡頭是不行的,要對進度條進行重繪。 第一步:建立一個基於對話方塊的工程,並在對話方塊中拖動一個進度條控制元件,

Burp Suite之截斷代理功能及相關設定(一)

Burpsuite 1.burpsuite 簡介2.設定代理3.Target4.爬網模組5.掃描模組6.擴充套件模組7.intrude8.Repeater9.Sequencer10.Decoder11.Compare12.burpsuite 專案主配置資訊     1.burpsu

《第一行程式碼Android》學習總結第二章 Activity建立與相關設定

一、id標籤 如果在XML檔案中引用一個id,則使用@id/id_name; 如果在XML檔案中定義一個id,則使用@+id/id_name。 二、程式中設定主活動 在AndroidMaifest.xml中設定 <intent-filter>   

Fiddler抓取https相關設定

  轉自:https://www.cnblogs.com/joshua317/p/8670923.html   很多使用fiddler抓包,對於http來說不需太多糾結,隨便設定下就能用,但是抓取https就死活抓不了。   出現諸如以下問題:   unable to generate certific

安卓 ToolBar 顏色樣式設定

設定Toolbar彈出選單的字型顏色和背景顏色,包括三個點選單顏色和返回圖示的顏色。   佈局檔案xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="

orbbec:在windows10環境vs2013下配置openni.h的相關設定include和lib

orbbec:在windows10環境vs2013下配置openni相關設定,包括include和lib orbbec的sample執行前必須先配置include和lib 1、點選vs的 除錯 選單-屬性 2、在C/C++ -常規-附加包含目錄 中設定include

Sap許可權相關設定、控制及傳輸

1、許可權相關概念簡介 一、首先我們先來介紹以下這幅圖(PFCG),這裡麵包含幾個許可權相關的概念。 以上圖為例,我們來簡單的介紹上圖中的幾個概念: 1、Role:一堆TCODE的集合,當然還包含有TCODE必備的“許可權物件”、“許可權欄位”、“欄

openv_p_n客戶端相關設定

安裝好客戶端後,把三個檔案放在config目錄下(預設C:\Program Files\Openv_p_n\config) 1、證書檔案:ca.crt,從伺服器生成2、配置檔案:自定義命名ov_p_n結尾檔案,存放伺服器地址及相關配置檔案3、密碼檔案:自定義命名,內容為第一行賬號,第二行密碼;這樣可以不

Qt for ios / Qt for Android 設定透明狀態列

前言 所謂的透明狀態列,有些人也稱之為沉浸式標題欄,就是要讓系統的通知欄也顯示出來,這樣整體看上起會非常美觀,目前用到的所有軟體幾乎都是這種風格,如果是用原生開發的話其實是非常容易的,但是如果是跨平臺開發,比如 Qt 來開發 android 或者 ios,那就有點難搞了,Qt 並沒有