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;
}


免責聲明!

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



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