一行程式碼修改TabBar圖示渲染顏色
阿新 • • 發佈:2019-02-02
我們都知道iOS開發中,如果給TabBar的標籤設定了自定義的圖示之後,TabBar圖示預設會被渲染成藍色。
iOS中UIImage的渲染模式有三種:
- UIImageRenderingModeAutomatic // 根據圖片的使用環境和所處的繪圖上下文自動調整渲染模式,預設就是藍色
- UIImageRenderingModeAlwaysOriginal // 始終繪製圖片原始狀態,不使用Tint Color
- 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!~:
用上面兩行程式碼,不需要修改圖片的RanderingMode。
但是系統給我們報了一個⚠️警告說該方法setSelectedImageTintColor:在iOS8.0已經過期了,用TintColor.
於是我們把第一句程式碼刪掉了,但是效果是這樣的:
這時,我們想起了圖片的渲染模式中的最後一種,只要我們把RanderingMode改成Template Image,就大功告成了!
用一行程式碼修改TabBar的圖示和文字的渲染顏色。