## 一:效果對比
當我們設置tabBarController的tabBarItem.image的時候,默認情況下會出現圖片變成藍色的效果,這是因為ios7之后會對圖片自動渲染成藍色?
代碼
~~~
UIViewController *home = [[UIViewController alloc]init];
//設置標題
home.tabBarItem.title = @"首頁";
//設置未選中時候的圖片
home.tabBarItem.image = [UIImage imageNamed:@"tabbar_home"];
//設置選中時候的圖片
home.tabBarItem.selectedImage = [UIImage imageNamed:@"tabbar_home_selected"];
home.view.backgroundColor = [UIColor blueColor];
~~~
效果:
我們需要改成這樣的效果

## 二:解決方法
解決方法有兩個,一種是用xcode自帶的功能設置,另一種是用純代碼的方式來解決——之前貓貓見過自定義的tabBar。。。弱爆了(有增加了一點牛zhuang掰bi手段 )
### 第一種,代碼方式解決
代碼:
~~~
//首頁
UIViewController *home = [[UIViewController alloc]init];
home.tabBarItem.title = @"首頁";
home.tabBarItem.image = [UIImage imageNamed:@"tabbar_home"];
UIImage *selImage = [UIImage imageNamed:@"tabbar_home_selected"];
//設置渲染模式為原始
home.tabBarItem.selectedImage = [selImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
home.view.backgroundColor = [UIColor blueColor];
~~~
注意上下對比下原來代碼,
### 第二種方法
在圖片中找到圖片 第三個 –》 render as(渲染器) –》 original image(原始的圖片)?


選中第二個 original image 就ok了 不過這方法要挨著設置
## 三:建立UIImage的分類
直接建立分類 一句代碼搞定


然后寫代碼了就是
### UIImage+image.h中的代碼
~~~
//
// UIImage+image.h
// 貓貓微博
//
// Created by apple on 15-7-22.
// Copyright (c) 2015年 znycat. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIImage (image)
/**
* 加載最原始的圖片,沒有渲染過
*
* @param imageName 圖片名稱
*
* @return UIImage對象
*/
+(instancetype)imageWithOriginalName:(NSString *)imageName;
@end
~~~
### UIImage+image.m中的代碼
~~~
//
// UIImage+image.m
// 貓貓微博
//
// Created by apple on 15-7-22.
// Copyright (c) 2015年 znycat. All rights reserved.
//
#import "UIImage+image.h"
@implementation UIImage (image)
+(instancetype)imageWithOriginalName:(NSString *)imageName
{
//ios7之后會自動渲染,不讓渲染有兩種方法
//1:在圖片中找到圖片 第三個 --》 render as(渲染器) --》 original image(原始的圖片)
//2:代碼設置
UIImage *image = [UIImage imageNamed:imageName];
//設置渲染模式為原始
return [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
}
@end
~~~
## 四:調用
這樣調用的時候直接一句代碼就可以完成了
首先要在頭文件導入
~~~
#import "UIImage+image.h"
~~~
然后調用就這樣掉
~~~
home.tabBarItem.selectedImage = [UIImage imageWithOriginalName:@"tabbar_home_selected"];
~~~
偶了
* * *
ps:注意代碼抽取,更好用,簡單說,兩句代碼能用一句寫,那就抽出來,以前貓貓就是覺得一兩句抽不抽的無所謂,復制下就行了,前段時間幫忙做項目吃了大虧 哭一個先,%>_<%
- 前言
- (1)微博主框架-子控制器的添加
- (2)微博主框架-自定義導航控制器NavigationController
- (3)微博主框架-UIImage防止iOS7之后自動渲染_定義分類
- (4)微博自定義tabBar中間的添加按鈕
- (5)微博自定義搜索框searchBar
- (6)導航控制器NavigationController 的滑動回退功能實現
- (7)程序啟動新特性用UICollectionViewController實現
- (8)用AFNetworking和SDWebImage簡單加載微博數據
- (9)微博模型之時間相關重要操作,判斷剛剛,昨天,今年等等
- (10)微博cell中圖片的顯示以及各種填充模式簡介
- (11)發送微博自定義TextView實現帶占位文字
- (12)發送微博自定義工具條代理實現點擊事件
- (13)發送微博調用相機里面的圖片以及調用相機