设置Storyboard上UITabBarController的UITabBarItem的image和title

storyBoard上直接设置的UITabBarControllerUITabBarItemimagetitle,系统默认是灰色跟蓝色的,但是我们的图片是带边框的,直接在storyBoard上设置图片只能通过设置setTintColor来改变图片的颜色,而边框却没有了,这跟预期效果不一样。可以直接通过代码来设置:

特别说明一下:

1.UIImageRenderingModeAutomatic // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式。 2.UIImageRenderingModeAlwaysOriginal // 始终绘制图片原始状态,不使用Tint Color。 3.UIImageRenderingModeAlwaysTemplate // 始终根据Tint Color绘制图片,忽略图片的颜色信息。

第一种方法:通过UITabBarItem来设置

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    if (!self.window.rootViewController) {
        self.window.rootViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"UITabBarController"];
    }
    self.window.rootViewController.view.backgroundColor = [UIColor whiteColor];
    UITabBarController *tabbar = (id)self.window.rootViewController;
    
    UITabBarItem *item1 = tabbar.tabBar.items[0];
    item1.image = [[UIImage imageNamed:@"ic_main_mine"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    item1.selectedImage = [[UIImage imageNamed:@"ic_main_mine_selected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    item1.title = @"我的";
    
    UITabBarItem *item2 = tabbar.tabBar.items[1];
    item2.image = [[UIImage imageNamed:@"ic_main_home"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    item2.selectedImage = [[UIImage imageNamed:@"ic_main_home_selected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    item2.title = @"首页";
    
    [[UITabBar appearance] setTintColor:HSQColorTitleCoffee];
    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:HSQColorTitleCoffee, NSForegroundColorAttributeName, nil] forState:UIControlStateNormal];
    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:HSQColorTitleCoffee, NSForegroundColorAttributeName, nil] forState:UIControlStateSelected];
    
    return YES;
}

第二种方法通过控制器firstVC.tabBarItem来设置:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    if (!self.window.rootViewController) {
        self.window.rootViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"UITabBarController"];
    }
    self.window.rootViewController.view.backgroundColor = [UIColor whiteColor];
    UITabBarController *tabbar = (id)self.window.rootViewController;
    FirstViewController *firstVC = tabbar.viewControllers[0];
    SecondViewController *secondVC = tabbar.viewControllers[1];
    //这种方法UIImageRenderingModeAlwaysOriginal这个只有selectedImage生效,不建议使用,可以自己试试
    firstVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"首页" image:[UIImage imageNamed:@"ic_main_home"] selectedImage:[[UIImage imageNamed:@"ic_main_home_selected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
    //建议使用
    secondVC.tabBarItem.image = [[UIImage imageNamed:@"ic_main_mine"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    secondVC.tabBarItem.selectedImage = [[UIImage imageNamed:@"ic_main_mine_selected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    secondVC.title = @"我的";
    return YES;
}

DEMO链接:https://github.com/Minozmin/TabBarSystem.git

你可能感兴趣的:(设置Storyboard上UITabBarController的UITabBarItem的image和title)