IOS UITabBarController
UITabBarController 标签/分栏控制器
//UITabBarController (标签栏控制器,父类为UIViewController,能够管理多个视图控制器,是一个软件架构级的组件)
//tabBarItem.image image的最佳尺寸(30*30/视网膜屏60*60),图片过大,会显示成矩形的黑块,不会显示实际图片
//tabBarItem为视图控制器的属性,为UITabBarItem的对象,显示在底部的标签栏上,通过tabBarItem可以定制图片和标题的显示
//对视图控制器的title属性赋值,相当于对视图控制器的navigationItem.title 和tabBarItem.title同时赋值
//设置tabBarItem处于选中状态和非选中状态下的图片
[nav2.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"tab_s.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"tab_1.png"]];
//设置tabBarItem的徽标
vc4.tabBarItem.badgeValue = @"4";
//自己创建一个tabBarItem,利用系统样式创建一个对象,tag值,标记tabBarItem,几乎不会去使用
//利用系统样式创建的tabBarItem,后续再更改image,title 无效果
//了解 通过初始化标题和图片的方法得到tarBarItem对象,效果与直接对tabBarItem.title/tabBarItem.image赋值是一样的
//标签栏控制器的viewControllers是一个数组,里面存有各个视图控制器的对象
//各个视图控制器在标签栏控制器上的显示顺序(左->右)与在数组中的顺序一致
//UITabBarController管理视图控制器:各个视图控制器在标签栏控制器中是并列的关系,理论上各个视图控制器彼此相互独立,互不影响
tabController.viewControllers = controllers;
//当添加到标签栏控制器上的对象多于5个的时候,标签栏控制器会自动创建一个moreTabBarItem,同时也会创建一个moreNavigationController ,第5个和5以后的tabBarItem会以列表的形式展示在more中
//tabController.moreNavigationController
//moreNavigationController 不会放在viewControllers数组中,标签栏控制器单独管理它
//将标签栏控制器赋给window
//通过下标的方式,设置被选中的item 下标从0开始
//tabController.selectedIndex = 1;
//通过指定视图控制器,设置被选中的item
//tabController.selectedViewController = [controllers objectAtIndex:1];
//viewController为被选中的tabBarItem所对应的视图控制器
//让self 0.3秒之后执行showTabBar方法
//self performSelector:<#(SEL)#> withObject:<#(id)#> afterDelay:<#(NSTimeInterval)#>
[self performSelector:@selector(showTabBar) withObject:nil afterDelay:0.1];
//UITabBar 标签栏,父类为UIView
//标签栏控制器带有一个标签栏,所有视图控制器共用一个标签栏
//当视图控制器,或者视图控制器的父控制器,添加到标签栏控制器上,可以通过tabBarController属性,取到标签栏控制器
//self.tabBarController.tabBar,tabBar尺寸固定(320*49)
//属性hidesBottomBarWhenPushedYES时,当视图控制器被加到栈中时,隐藏底部的标签栏
//vc7.hidesBottomBarWhenPushed = YES;//此属性写在vc7push之前,因为push的时候,会检测此属性值,根据属性值的进行后续的处理
//当应用程序的活跃内存开辟达到操作系统承受的阖值时,操作系统会给应用程序发送内存告急的信号,应用程序会调用所有已经存在的视图控制器的didReceiveMemoryWarning 方法
//拿到标签栏控制器view的所有子视图
NSArray *subViews =self.tabBarController.view.subviews;
//设置缓冲动画,将要延迟执行的代码片段放到block中
[UIView animateWithDuration:0.2
animations:^{
//根据点击的btn,改变label的横坐标
CGRect frame = indicatorLabel.frame;
frame.origin.x = space + btn.tag *(space +30);
indicatorLabel.frame = frame;
}];