IOS7以后無需自定義,改變UITabbarItem的圖片文字顏色


在IOS7以前,UITabbarItem的圖片都是被固定渲染為藍色,想要改變UITabbarItem的圖片顏色就必須要自定義,在IOS7以后,得到了更新,方便大家自己去設定顏色,下面給出代碼!

1、創建UITabbarItem的默認圖片和選中圖片

//第一個界面    
    ChildViewController *childvc = [[ChildViewController alloc]initWithNibName:nil bundle:nil];
    UINavigationController *childnav = [[UINavigationController alloc]initWithRootViewController:childvc];
   // UITabBarItem *childItem = [[UITabBarItem alloc]init];
    UITabBarItem *childItem = [[UITabBarItem alloc]initWithTitle:@"孩子情況" image:[UIImage imageNamed:@"關於孩子 默認效果.png"] tag:1];
    childItem.selectedImage = [[UIImage imageNamed:@"關於孩子 選中效果.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    childnav.tabBarItem = childItem;

初始化的方法最好是用這個

- (instancetype)initWithTitle:(NSString *)title image:(UIImage *)image tag:(NSInteger)tag;

其中

    childItem.selectedImage = [[UIImage imageNamed:@"關於孩子 選中效果.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

這句話就是設置選中時候的圖片,始終讓圖片保持原樣不被渲染為藍色。

imageWithRenderingMode是UIImage的一個渲染模式,着色(Tint Color)是iOS7界面中的一個.設置UIImage的渲染模式:UIImage.renderingMode重大改變,你可以設置一個UIImage在渲染時是否使用當前視圖的Tint Color。UIImage新增了一個只讀屬性:renderingMode,對應的還有一個新增方法:imageWithRenderingMode:,它使用UIImageRenderingMode枚舉值來設置圖片的renderingMode屬性。該枚舉中包含下列值:
  1. UIImageRenderingModeAutomatic  // 根據圖片的使用環境和所處的繪圖上下文自動調整渲染模式。  
  2. UIImageRenderingModeAlwaysOriginal   // 始終繪制圖片原始狀態,不使用Tint Color。  
  3. UIImageRenderingModeAlwaysTemplate   // 始終根據Tint Color繪制圖片,忽略圖片的顏色信息。  
 

renderingMode屬性的默認值是UIImageRenderingModeAutomatic,即UIImage是否使用Tint Color取決於它顯示的位置。

 

2、設置UITabbarItem的title的顏色不被渲染

    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor lightGrayColor], UITextAttributeTextColor, nil] forState:UIControlStateNormal];
    [[UITabBarItem appearance] setTitleTextAttributes:                                                         [NSDictionary dictionaryWithObjectsAndKeys:[UIColor colorWithRed:59.0/255.0 green:207.0/255.0 blue:202.0/255.0 alpha:1],UITextAttributeTextColor, nil]forState:UIControlStateSelected];
    

其中上面的那句是設置默認顏色的,下面的時設置選中后的字體的顏色。

 

 

下面是完整的AppDelegate.m方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    //第一個界面    
    ChildViewController *childvc = [[ChildViewController alloc]initWithNibName:nil bundle:nil];
    UINavigationController *childnav = [[UINavigationController alloc]initWithRootViewController:childvc];
   // UITabBarItem *childItem = [[UITabBarItem alloc]init];
    UITabBarItem *childItem = [[UITabBarItem alloc]initWithTitle:@"孩子情況" image:[UIImage imageNamed:@"關於孩子 默認效果.png"] tag:1];
    childItem.selectedImage = [[UIImage imageNamed:@"關於孩子 選中效果.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    childnav.tabBarItem = childItem;
    //第二個界面
    KKViewController *chatvc = [[KKViewController alloc]initWithNibName:nil bundle:nil];
    UINavigationController *chatNav = [[UINavigationController alloc]initWithRootViewController:chatvc];
    UITabBarItem *chatItem = [[UITabBarItem alloc]initWithTitle:@"聊天" image:[UIImage imageNamed:@"溝通 默認.png"] tag:2];
    
    chatItem.selectedImage = [[UIImage imageNamed:@"溝通 選中.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    chatNav.tabBarItem = chatItem;
    
    //第三個界面
    ToolsViewController *toolvc = [[ToolsViewController alloc]initWithNibName:nil bundle:nil];
    UINavigationController *toolNav = [[UINavigationController alloc]initWithRootViewController:toolvc];
    UITabBarItem *toolItem = [[UITabBarItem alloc]initWithTitle:@"工具欄" image:[UIImage imageNamed:@"工具欄 默認.png"] tag:3];
    toolItem.selectedImage = [[UIImage imageNamed:@"工具欄 選中.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    toolNav.tabBarItem = toolItem;

    //第四個界面
    PersonViewController *loginvc = [[PersonViewController alloc]initWithNibName:nil bundle:nil];
    UINavigationController *loginnav = [[UINavigationController alloc]initWithRootViewController:loginvc];
    UITabBarItem *loginItem = [[UITabBarItem alloc]initWithTitle:@"個人中心" image:[UIImage imageNamed:@"個人中心 默認.png"] tag:4];
    loginItem.selectedImage = [[UIImage imageNamed:@"個人中心 選中.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    loginnav.tabBarItem = loginItem;
    
    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor lightGrayColor], UITextAttributeTextColor, nil] forState:UIControlStateNormal];
    [[UITabBarItem appearance] setTitleTextAttributes:                                                         [NSDictionary dictionaryWithObjectsAndKeys:[UIColor colorWithRed:59.0/255.0 green:207.0/255.0 blue:202.0/255.0 alpha:1],UITextAttributeTextColor, nil]forState:UIControlStateSelected];
    
    
    UITabBar *tb=[[UITabBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 96.0) ] ;
    [self.window addSubview:tb];
    UITabBarController *tbc = [[UITabBarController alloc]init];
    tbc.viewControllers = @[childnav,chatNav,toolNav,loginnav];
     
    self.window.rootViewController = tbc;
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;

}

 

有疑問的請留言相互交流!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM