当一个项目中UITabBarController,UIViewController三种控制器同时出现的时候,将标签控制器(UITabBarController)做为视图的根控制器,将建立的视图控制器做为标签控制器的子控制器。数组
//建立标签控制器 UITabBarController *tabarVC = [[UITabBarController alloc]init]; NSMutableArray *viewContrArr = [NSMutableArray array]; //没有元素 //建立五个视图控制器 for (int i = 0; i < 5; i ++) { UIViewController *viewCotrol = [[UIViewController alloc]init]; //设置颜色 viewCotrol.view.backgroundColor = [UIColor colorWithRed:arc4random()%10*0.1 green:arc4random()%10*0.1 blue:arc4random()%10*0.1 alpha:1]; [viewContrArr addObject:viewCotrol]; } tabarVC.viewControllers = viewContrArr; self.window.rootViewController = tabarVC; /*******设置选项卡(标签项)******/ //UITabBar:标签栏 //UITabBarItem:选项卡 //1.使用系统的itme样式 UITabBarItem *itme1 = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:100]; //获取对应的视图控制器 UIViewController *VC1 = viewContrArr[0]; VC1.tabBarItem = itme1; UITabBarItem *itme2 = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemHistory tag:101]; UIViewController *VC2 = viewContrArr[1]; VC2.tabBarItem = itme2; //2.建立图片itme UITabBarItem *itme3 = [[UITabBarItem alloc]initWithTitle:@"广场" image:[UIImage imageNamed:@"2.png"] tag:102]; UIViewController *VC3 = viewContrArr[2]; VC3.tabBarItem = itme3; UITabBarItem *itme4 = [[UITabBarItem alloc]initWithTitle:@"" image:[UIImage imageNamed:@"3.png"] selectedImage:[UIImage imageNamed:@"选中.png"]]; UIViewController *VC4 = viewContrArr[3]; VC4.tabBarItem = itme4; //3.设置背景图片 UITabBar [tabarVC.tabBar setBackgroundImage:[UIImage imageNamed:@"navbg.png"]]; //4.设置选项被选中的颜色 tabarVC.tabBar.tintColor = [UIColor redColor]; //5.设置背景颜色 //tabarVC.tabBar.backgroundColor = [UIColor blackColor]; //错误的设置方法 //tabarVC.tabBar.barTintColor = [UIColor blackColor]; //6.设置选中图片 tabarVC.tabBar.selectionIndicatorImage = [UIImage imageNamed:@"选中"]; //7.设置提示数字 字符串类型 itme1.badgeValue = @"99+"; return YES; }
当UITabBarController,UINavigationController ,UIViewController三种控制器同时须要使用的时候,三级控制器中dom
UITabBarController为第一级控制器,UINavigationController做为第二级控制器,而UIViewController做为第三极控制器.ide
自定义UITabBarController工具
- (void)_createTabBarView { //1.隐藏系统提供的工具栏 self.tabBar.hidden = YES; //2.建立工具栏 UIView *tabBarView = [[UIView alloc]initWithFrame:CGRectMake(0, 568 - 49, 320, 49)]; //tabBarView.backgroundColor = [UIColor blackColor]; [tabBarView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"navbg"]]]; [self.view addSubview:tabBarView]; //建立选中视图 //建立选中视图 _selectImg = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 53, 45)]; _selectImg.image = [UIImage imageNamed:@"选中.png"]; [tabBarView addSubview:_selectImg]; //建立标签项(按钮) //建立存放图片名称的数组 NSArray *imgNames = @[@"1.png",@"2.png",@"3.png",@"4.png",@"5.png"]; for (int i = 0; i < self.viewControllers.count; i ++) { UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; [btn setImage:[UIImage imageNamed:imgNames[i]] forState:UIControlStateNormal]; btn.frame = CGRectMake(i * (320/5), 0, 320/5, 49); [btn addTarget:self action:@selector(clickedAction:) forControlEvents:UIControlEventTouchUpInside]; [tabBarView addSubview:btn]; btn.tag = 100 + i; if (i == 0) { _selectImg.center = btn.center; } } } - (void)clickedAction:(UIButton *)btn { //根据tag值获取子控制器的下标 int index =(int)btn.tag - 100; //根据下标获取对象的子控制器 self.selectedViewController = self.viewControllers[index]; [UIView animateWithDuration:.2 animations:^{ _selectImg.center = btn.center; }]; }