导航栏高度: 44 (navigationBar)
导航栏上边: 20
标签栏高度: 49 (tabBar)
//标签视图控制器(UITabBarController) : 主要用来管理具有不同功能并且属于同一层级结构的多个视图控制器. (比如: 电影推荐页面 -> 演出页面)
区别: 导航视图控制器(UINavigationController): 用来管理具有相同功能, 并且具有上下级关系的多个视图控制器, 负责页面之间的跳转.(比如: 电影推荐页面 -> 电影详情页面)
//特点: 可以将多个视图控制器模块化, 便于管理和使用.
UITabBarController *firstaTabBarController = [[UITabBarController alloc]init];
//指定当前标签视图控制器的代理人
firstaTabBarController.delegate = self;
//设置标签栏图片的渲染颜色
firstaTabBarController.tabBar.tintColor = [UIColor purpleColor];
FirstViewController *firstVC = [[FirstViewController alloc]init];
UINavigationController *firstNav = [[UINavigationController alloc]initWithRootViewController:firstVC];
//设置标题
firstNav.tabBarItem.title = @"首页";
//设置图片
firstNav.tabBarItem.image = [UIImage imageNamed:@"27-planet"];
//角标 属性: badgeValue(NSString)
firstNav.tabBarItem.badgeValue = @"99+";
SecondViewController *secondVC = [[SecondViewController alloc]init];
UINavigationController *secondNav = [[UINavigationController alloc]initWithRootViewController:secondVC];
// secondVC.tabBarItem.title = @"通讯录";
//
// secondVC.tabBarItem.image = [UIImage imageNamed:@"32-iphone"];
//自定义tabBarItem
//1. 以系统规定样式和tag值 来初始化UITabBarItem
secondNav.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:1000];
ThirdViewController *thirdVC = [[ThirdViewController alloc]init];
UINavigationController *thirdNav = [[UINavigationController alloc]initWithRootViewController:thirdVC];
// thirdVC.tabBarItem.title = @"朋友圈";
//
// thirdVC.tabBarItem.image = [UIImage imageNamed:@"93-thermometer"];
//2. 以标题, 图片和选中状态下的图片来初始化UITabBarItem
thirdNav.tabBarItem = [[UITabBarItem alloc]initWithTitle:@"第三页" image:[UIImage imageNamed:@"91-beaker2"] selectedImage:[UIImage imageNamed:@"77-ekg"]];
FourthViewController *fourVC = [[FourthViewController alloc]init];
UINavigationController *fourNav = [[UINavigationController alloc]initWithRootViewController:fourVC];
// fourNav.tabBarItem.title = @"第四";
//
// fourNav.tabBarItem.image = [UIImage imageNamed:@"94-pill"];
//3.以标题, 图片和tag值类初始化UITabBarItem
fourNav.tabBarItem = [[UITabBarItem alloc]initWithTitle:@"星期四" image:[UIImage imageNamed:@"80-shopping-cart"] tag:1001];
FifthViewController *fifthVC = [[FifthViewController alloc]init];
UINavigationController *fifthNav = [[UINavigationController alloc]initWithRootViewController:fifthVC];
// fifthNav.tabBarItem.title = @"第五";
//
// fifthNav.tabBarItem.image = [UIImage imageNamed:@"73-radar"];
fifthNav.tabBarItem = [[UITabBarItem alloc]initWithTitle:@"第五个" image:[UIImage imageNamed:@"40-inbox"] selectedImage:[UIImage imageNamed:@"49-battery"]];
SixthViewController *sixthVC = [[SixthViewController alloc]init];
sixthVC.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemHistory tag:1002];
//设置标签视图控制器管理的视图控制器
firstaTabBarController.viewControllers = @[firstNav, secondNav, thirdNav, fourNav, fifthNav, sixthVC];
//指定当前标签视图控制器选中的模块
//需要在viewController都添加到视图控制器数组中后, 才能显示
firstaTabBarController.selectedIndex = 2;
//设置标签栏的背景颜色 barTintColor
// firstaTabBarController.tabBar.barTintColor = [UIColor grayColor];
self.window.rootViewController = firstaTabBarController;
#warning 注意: 使用UIAppearance一定要在视图显示之前设置, 通常我们使用UIAppearance设置统一的导航条或者状态条等.
//设置所有的navigationBar的统一样式
[[UINavigationBar appearance]setBarTintColor:[UIColor cyanColor]];
//一般将导航栏和标签栏设置成统一色调.
//设置标签栏的统一样式
[[UITabBar appearance]setBarTintColor:[UIColor grayColor]];
// //指定某个类的导航栏样式
// //不好用
// [[UINavigationBar appearanceWhenContainedIn:[FirstViewController class], nil]setBarTintColor:[UIColor cyanColor]];
//
//
//
[firstaTabBarController release];
[firstVC release];
[secondVC release];
[thirdVC release];
[fourVC release];
[fifthVC release];
[sixthVC release];
[_window release];
[self.window makeKeyAndVisible];
return YES;
}
//viewController 当前选中的Controller
#warning 注意: 标签视图控制器默认只能容纳5个模块(视图控制器), 如果多于5个, 那么会出现more, 点击more, 会出现一个默认的tableView, 用来显示多余的模块
-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
//当前点击的视图的角标清零
viewController.tabBarItem.badgeValue = nil;
NSLog(@"%@", viewController);
}