一、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。