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
- CSS設定元素的背景顏色CSS
- markdown字型顏色和背景設定
- 設定Tabbar和NavigationBar的顏色tabBarNavigation
- iOS 去除 TabBarItem的圖片預設顏色iOStabBar
- iOS button背景顏色狀態設定iOS
- IOS設定狀態列的背景顏色iOS
- win10系統如何設定Word背景顏色_win10 word頁面背景顏色設定步驟Win10
- WIN10主題設定後背景顏色不能鎖定怎麼處理Win10
- 設定文字的選中狀態背景顏色
- VC 對話方塊背景顏色、控制元件顏色控制元件
- shell日誌顏色處理
- JavaScript WebGL 設定顏色JavaScriptWeb
- AUTOCAD——設定顏色
- 設定Toast字型顏色AST
- ProgressBar 顏色的設定
- system命令設定顏色
- Eclipse背景顏色修改Eclipse
- iOS UISearchBar 修改背景顏色iOSUI
- CAD如何設定顏色
- 【emWin】例程六:設定顏色
- Linux vi 顏色設定Linux
- 我的SCRT顏色設定
- iphone 更改鍵盤背景顏色iPhone
- TextView設定部分或指定背景色和字型顏色TextView
- 微信讀書怎麼設定背景顏色 微信讀書設定背景教程
- Flutter改變狀態列字型、狀態列背景顏色、Appbar背景顏色的方式FlutterAPP
- win10 如何設定txt背景綠色 win10如何在txt文件修改背景顏色Win10
- 動態改變Drawable中我們自定義背景的顏色並設定顏色以16進位制進行設定
- CSS 設定字型顏色和大小CSS
- qt 設定選單欄顏色QT
- jQuery設定div邊框顏色jQuery
- RGB顏色設定錯誤
- 設定placeholder的字型顏色
- CSS 中的顏色、背景和剪下CSS
- CSS-背景顏色|background-colorCSS
- css3背景顏色漸變CSSS3