iOS 自定义一个常规的TabBar

#import "WJWBaseTabBarViewController.h"
#import "WJWTabBarButton.h"
#import "WJWMainViewController.h"
#import "WJWDiscoverViewController.h"
#import "WJWMyViewController.h"


@interface WJWBaseTabBarViewController ()
@property (nonatomic, weak) UIButton *selectedBtn;

@end

@implementation WJWBaseTabBarViewController

+ (void)load {
    UITabBarItem *item = [UITabBarItem appearanceWhenContainedInInstancesOfClasses:@[[self class]]];
    NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
    attrs[NSForegroundColorAttributeName] = [UIColor blackColor];
    [item setTitleTextAttributes:attrs forState:UIControlStateSelected];
    
    NSMutableDictionary *attrsFontNormal = [NSMutableDictionary dictionary];
    attrsFontNormal[NSFontAttributeName] = [UIFont systemFontOfSize:13];
    [item setTitleTextAttributes:attrs forState:UIControlStateSelected];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self configAllSunTabs];
    [self setAllTabBarItems];
}


- (void)configAllSunTabs {
    WJWMainViewController *mainVC = [[WJWMainViewController alloc] init];
    UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:mainVC];
    [self addChildViewController:nav1];
    
    WJWDiscoverViewController *disVC = [[WJWDiscoverViewController alloc] init];
    UINavigationController *nav2 = [[UINavigationController alloc] initWithRootViewController:disVC];
    [self addChildViewController:nav2];
    
    WJWMyViewController *myVC = [[WJWMyViewController alloc] init];
    UINavigationController *nav3 = [[UINavigationController alloc] initWithRootViewController:myVC];
    [self addChildViewController:nav3];
    
}

- (void)setAllTabBarItems {
    NSArray *normalBtnArray = @[@"home_normal",@"faxian_normal",@"shequ_normal",@"haoyou_normal",@"wode_normal"];
    NSArray *highlightBtnArray = @[@"home_highlight",@"faxian_highlight",@"shequ_highlight",@"haoyou_highlight",@"wode_highlight"];
    
    NSArray *titleArray = @[@"首页",@"发现",@"社区",@"好友",@"我的"];
    
    
    UINavigationController *nav1 = self.childViewControllers[0];
    nav1.tabBarItem.title = titleArray[0];
    nav1.tabBarItem.image = [UIImage imageNamed:normalBtnArray[0]];
    nav1.tabBarItem.selectedImage = [UIImage imageNamed:highlightBtnArray[0]];
    
    UINavigationController *nav2 = self.childViewControllers[1];
    nav2.tabBarItem.title = titleArray[1];
    nav2.tabBarItem.image = [UIImage imageNamed:normalBtnArray[1]];
    nav2.tabBarItem.selectedImage = [UIImage imageNamed:highlightBtnArray[1]];

    
    UINavigationController *nav3 = self.childViewControllers[2];
    nav3.tabBarItem.title = titleArray[4];
    nav3.tabBarItem.image = [UIImage imageNamed:normalBtnArray[4]];
    nav3.tabBarItem.selectedImage = [UIImage imageNamed:highlightBtnArray[4]];
}
    

- (void)viewDidLayoutSubviews {
    
}


/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end

AppDelegete.m 中把tabBarController设置为 window的根控制器。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    WJWBaseTabBarViewController *baseTabBar = [[WJWBaseTabBarViewController alloc] init];
    
    self.window.rootViewController = baseTabBar;
    [self.window makeKeyAndVisible];
    return YES;
}
posted @ 2019-04-09 22:13  wjwdive  阅读(1760)  评论(0编辑  收藏  举报