在IOS7中,使用storyboard添加uitabbarcontroller后,样式无法更改,默认的样式难免100%和自己的APP风格一样。
此时需要更改uitabbar样式。
我是这么做的,先新建一个RootTabBarController继承UITabBarController,然后在storyboard里关联一下
RootTabBarController.h文件
#import <UIKit/UIKit.h>
@interface RootTabBarController : UITabBarController<UITabBarControllerDelegate>
@end
RootTabBarController.m文件
#import "RootTabBarController.h"
@interface RootTabBarController ()
@end
@implementation RootTabBarController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
//设置背影
[self.tabBar setBackgroundImage:[UIImage imageNamed:@"tabbar_home_bg"]];
self.tabBar.layer.borderWidth = 0;
self.delegate = self;
NSArray *items = self.tabBar.items;
UITabBarItem *homeItem = items[0];
//设置每个按钮的图标
homeItem.image = [[UIImage imageNamed:@"home"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
homeItem.selectedImage = [[UIImage imageNamed:@"home"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UITabBarItem *exchangeItem = items[1];
exchangeItem.image = [[UIImage imageNamed:@"exchange"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
exchangeItem.selectedImage = [[UIImage imageNamed:@"exchange"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UITabBarItem *accountItem = items[2];
accountItem.image = [[UIImage imageNamed:@"account"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
accountItem.selectedImage = [[UIImage imageNamed:@"account"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UITabBarItem *settingItem = items[3];
settingItem.image = [[UIImage imageNamed:@"setting"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
settingItem.selectedImage = [[UIImage imageNamed:@"setting"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
}
//当uitabbaritem被选中时做出对应的改变
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
//UITabBarItem *itme = self.tabBar.items[self.selectedIndex];
//itme.badgeValue = nil;
switch (self.selectedIndex) {
case 0:
[self.tabBar setBackgroundImage:[UIImage imageNamed:@"tabbar_home_bg"]];
break;
case 1:
[self.tabBar setBackgroundImage:[UIImage imageNamed:@"tabbar_exchange_bg"]];
break;
case 2:
[self.tabBar setBackgroundImage:[UIImage imageNamed:@"tabbar_account_bg"]];
break;
case 3:
[self.tabBar setBackgroundImage:[UIImage imageNamed:@"tabbar_setting_bg"]];
break;
default:
break;
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
另外,如果需要改变UITABBAR默认的文字颜色及上边线,
//去看uitabbar上边线
[[UITabBar appearance] setShadowImage:[[UIImage alloc]init]];
//uitabbar 默认文字显示颜色
[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary
dictionaryWithObjectsAndKeys: [UIColor whiteColor],NSForegroundColorAttributeName, nil] forState:UIControlStateNormal];