1. 程式人生 > >一行程式碼修改TabBar圖示渲染顏色

一行程式碼修改TabBar圖示渲染顏色

我們都知道iOS開發中,如果給TabBar的標籤設定了自定義的圖示之後,TabBar圖示預設會被渲染成藍色。

預設

iOS中UIImage的渲染模式有三種:

  1. UIImageRenderingModeAutomatic // 根據圖片的使用環境和所處的繪圖上下文自動調整渲染模式,預設就是藍色
  2. UIImageRenderingModeAlwaysOriginal // 始終繪製圖片原始狀態,不使用Tint Color
  3. UIImageRenderingModeAlwaysTemplate // 始終根據Tint Color繪製圖片,忽略圖片的顏色資訊

為了自定義圖示樣式,一般開發中會選擇採取下列步驟:

1. 在Assets.xcassets中,選中圖示圖片,修改渲染模式為Original

修改渲染模式

2. 分別設定修改tabBarItem.image和tabBarItem.selectedImage的圖片

也可以在程式碼中這樣來修改RanderingMode:

tabBarItem.selectedImage = [selImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

如果UI只給了你原圖示和一個RGB顏色值而沒有SelectedMode模式下渲染好的圖示。

那怎麼修改TabBar選中圖示和字型的顏色呢?

蘋果的渲染效果是比較美觀的,我們只兩行程式碼就可以實現上述效果了:

在AppDelegate的didFinishLaunchingWithOptions:中,新增兩行程式碼

[[UITabBar appearance] setSelectedImageTintColor:KTabBarColor];

[[UITabBar appearance] setTintColor:KTabBarColor];

tada!~:

ss

用上面兩行程式碼,不需要修改圖片的RanderingMode。

但是系統給我們報了一個⚠️警告說該方法setSelectedImageTintColor:在iOS8.0已經過期了,用TintColor.

於是我們把第一句程式碼刪掉了,但是效果是這樣的:
圖示未被渲染

這時,我們想起了圖片的渲染模式中的最後一種,只要我們把RanderingMode改成Template Image,就大功告成了!
用一行程式碼修改TabBar的圖示和文字的渲染顏色。