UITabBarController、TabBar背景顏色設定、TabBarItem顏色處理
在iOS的開發過程中我們使用最多的框架結構估計就是UITabBarController + UINavigationController架構了,然而在開發過程中,對於許多初學者,甚至對於許多有半年多開發經驗的iOS dev來說還是會有很多很棘手的問題,比如設定tabBar的背景顏色、tabBarItem的圖示選中時的顏色為藍色、tabBarItem選中的背景色的設定... 完整程式碼請關注微信公眾號後輸入 001 獲取。
下面建立專案並搭建UITabBarController + UINavigationController架構,最終的架構如圖:
為每個nav的item新增文字、圖片和selectedImage。然後執行可以看到如下圖:
現在我們來改變tabBar的背景顏色
設定tabBar的背景色
建立類ANTabBarController繼承自UITabBarController,並與storyBoard中的TabBarController關聯。在viewDidLoad中新增如下程式碼:[[UITabBar appearance] setBackgroundColor:[UIColor redColor]];,執行結果如圖:
但這個紅色並不是真正的紅色,而是系統處理過的紅色,修改首頁介面顏色為紅色來做個對比:
所以直接通過[[UITabBar appearance] setBackgroundColor:[UIColor redColor]];(此處寫錯,應該是[[UITabBar appearance] setBarTintColor:[UIColor redColor]];在demo中是寫對的,只是這裡寫錯了)。來改變tabar的顏色是不能得到想要的顏色的。如果想要得到想要的顏色需要再另外新增一句:[UITabBar appearance].translucent = NO;這句表示取消tabBar的透明效果。
第二種方法是你可以在tabBar上新增一個有顏色的View:
這樣也可以實現相同的效果
還有第三種方法就是使用背景圖片:
[[UITabBar appearance] setBackgroundImage:[UIImage imageNamed:@"tabBarBackgroundImage"]];
[UITabBar appearance].translucent = NO;
但同樣需要[UITabBar appearance].translucent = NO;
接下來需要處理的第二個問題就是:tabBarItem
設定tabBarItem
首先很多運用中需要在點選某個item後,需要改變背景色,可以通過tabBar的selectionIndicatorImage屬性來實現。
第一種方式就是讓美工切出符合的圖直接放上去,但這種方式美工需要切多個不同尺寸的圖,不方便,如果背景色改變,全部圖又要重新切,很麻煩。
第二種方式就是自己畫,畫好後,如果背景色需要改變只需要修改顏色就可以了,不用切圖程式碼實現:
現在選中顏色已經改變了,如圖:
好了,tabBarItem的選中時的背景顏色已經弄好了。解決下一個問題
tabBarItem圖示文字顏色修改
應該發現了tabBarItem的圖示和文字的預設顏色是灰色,選中顏色是藍色。這是系統預設給圖示、文字修改成了灰色和藍色。如果要改變選中item的顏色可以直接使用tabBar的tintColor來實現,但是如果圖示換成別的顏色了又要重新修改tintColor,很不方便。所以重寫一個繼承與UITabBarItem的自定義類,在initWithCoder:方法中實現如下程式碼:
mostColorWithImage:方法是自定義的獲取圖片主顏色的方法,具體程式碼:
這樣就完成了。
相關文章
- 設定toast的字型顏色和背景顏色AST
- CSS設定元素的背景顏色CSS
- markdown字型顏色和背景設定
- svg 圖示設定背景顏色SVG
- WIN10主題設定後背景顏色不能鎖定怎麼處理Win10
- AUTOCAD——設定顏色
- win10系統如何設定Word背景顏色_win10 word頁面背景顏色設定步驟Win10
- shell日誌顏色處理
- JavaScript WebGL 設定顏色JavaScriptWeb
- CAD如何設定顏色
- VC 對話方塊背景顏色、控制元件顏色控制元件
- 我的SCRT顏色設定
- Flutter改變狀態列字型、狀態列背景顏色、Appbar背景顏色的方式FlutterAPP
- win10 如何設定txt背景綠色 win10如何在txt文件修改背景顏色Win10
- CSS 設定字型顏色和大小CSS
- CSS設定選中網頁文字時的背景和顏色CSS網頁
- 如何設定小程式頁面各個部分的背景顏色?
- JavaScript點選設定背景顏色的選項卡程式碼JavaScript
- js設定頁面TR 的屬性 背景顏色 樣式JS
- CSS 中的顏色、背景和剪下CSS
- CSS-背景顏色|background-colorCSS
- css3背景顏色漸變CSSS3
- [SVG]修改固定顏色為填充顏色SVG
- WebGL 紋理顏色原理Web
- CSS 設定文字框游標顏色CSS
- 如何決定介面設計中顏色
- word字型顏色怎麼快速設定?
- qt 設定QTextEdit文字框中指定內容塊的背景顏色QT
- Markdown(入門)——文字設定 ->(字型、字號、顏色和背景色)
- bootstrap datepicker 單獨設定某些日期的特殊背景顏色和某些月份特殊背景boot
- 修改pyqtgraph匯出檢視背景顏色QT
- 強大的CSS:顏色、背景和剪下CSS
- HTML 顏色HTML
- css顏色CSS
- eclipse怎麼簡單恢復預設背景顏色Eclipse
- CSS設定一個文字兩種顏色CSS
- win10 工作列顏色怎麼改_win10怎麼設定工作列顏色Win10
- win10修改字型顏色怎麼操作 windows10字型顏色設定方法Win10Windows
- 使用 Promise 迴圈改變 div 背景顏色Promise