一、UITabBarController的简介:

UITabBarController和UINavigationController类似,也是导航设置设计模式的一种,可以轻松地管理多个控制器,轻松完成控制器之间的切换,例如:QQ、微信等应⽤用的就是UITabBarController

 

二、UITabBarController的使用

1.使用步骤:

(1)初始化UITabBarController

(2)创建相应的子控制器(viewcontroller)

(3)把子控制器添加到UITabBarController

(4)做好相关的设置

代码展示

#import "MZTabBarController.h"

@interface MZTabBarController ()

@end

@implementation MZTabBarController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    // tabBar 的背景颜色
    self.tabBar.barTintColor = [UIColor cyanColor];
    // tabBar 上的控件颜色
    self.tabBar.tintColor = [UIColor redColor];
    
    [self createSubView:YES title:@"音乐" image:@"music" badgeValue:@"1"];
    [self createSubView:NO title:@"游戏" image:@"game" badgeValue:@"2"];
    [self createSubView:YES title:@"电影" image:@"vedio" badgeValue:@"3"];
    [self createSubView:YES title:@"照片" image:@"photo" badgeValue:@"4"];
    
    // 根据索引选择视图控制器
    self.selectedIndex = 2;
    
}
#pragma mark --创建子控制视图
- (void)createSubView:(BOOL)isNavi title:(NSString *)title image:(NSString *)imageName badgeValue:(NSString *)badgeValue{
    
    UIViewController *viewController = [[UIViewController alloc] init];
    
    // 判断是否需要导航栏
    if (isNavi) {
        // 设置导航栏上的标题(如果有导航栏)
        viewController.navigationItem.title = title;
        //navi.title = title; (这个是同时设置导航栏标题和tabBar标题)
        // 创建一个导航栏
        UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:viewController];
        // 设置tabBar的标题和图片
        navi.tabBarItem = [[UITabBarItem alloc] initWithTitle:title image:[UIImage imageNamed:imageName] tag:1];
        // 设置tabBar上显示的数字
        navi.tabBarItem.badgeValue = badgeValue;
        // 将子控制视图加到tabBarController上
        [self addChildViewController:navi];
    }else{
        // 设置tabBar标题、图片和被选中后的图片
        viewController.tabBarItem = [[UITabBarItem alloc] initWithTitle:title image:[UIImage imageNamed:imageName] selectedImage:[UIImage imageNamed:[imageName stringByAppendingString:@"-s"]]];
        // 设置tabBar上显示的数字
        viewController.tabBarItem.badgeValue = badgeValue;
        [self addChildViewController:viewController];
    }
}

效果如下图:

 

说明:

1.我是自定义了一个tabBar控制视图,自定义可以满足开发的需求,可以自定义你喜欢的控件上去,它自带的你不喜欢也可以自定义

2.tabBar的高度为49,每个tabBarButton的间隔是分布均匀的,如果tabBarButton太多后面会出现省略号,一个tabBarButton对应一个视图

3.UITabBarController添加子控制视图有两种方法:

- (void)addChildViewController:(UIViewController *)childController // 一个一个添加

@property(nonatomic,readonly) NSArray *childViewControllers  // 将需要添加的控制视图放到数组中

注意:他们的展示的顺序和添加的顺序一致,和导航控制器中不同,展现在眼前的是第一个添加的控制器对应的View。