UITabBarController

2016-05-22  本文已影响111人  Barry_小闪

标签栏控制器是容器视图控制器,专门用来管理视图控制器。管理的视图控制器之间是平级的。
使用的时要注意:我们一般会使用标签栏控制器去管理导航控制器,但是不会使用导航控制器去管理标签栏控制器;导航控制器不能去管理导航控制器。

目录

定制tabBar

1.设置是否有透明度

 [tabBarController.tabBar setTranslucent:NO];

2.设置tabBar的颜色

 [tabBarController.tabBar setBarTintColor:[UIColor yellowColor]];

3.设置填充颜色(镂空部分的颜色 -- 标签的文字的选中颜色)

 [tabBarController.tabBar setTintColor:[UIColor redColor]];

4.设置背景图片

 [tabBarController.tabBar setBackgroundImage:[UIImage imageNamed:@"tabbg"]];

5.在需要的时候隐藏tabBar

self.tabBarController.tabBar.hidden = YES;

tabBarItem定制

第一种方式定制tabBarItem

(1)设置标签正常状态的图片(如果选中图片和没有选中的图片的样式是一样,只是颜色不一样,只需呀设置tabBar的填充颜色就可以了,可以不用去设置选中的图片)

 [nav1.tabBarItem setImage:[UIImage imageNamed:@"image"]];

(2)设置标签选中状态的图片

 [nav1.tabBarItem setSelectedImage:[[UIImage imageNamed:@"faxian_d"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];

(3)设置标签名

[nav1.tabBarItem setTitle:@"发现"];

(4)给不同状态设置标签字体和颜色

 [nav1.tabBarItem setTitleTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17], NSForegroundColorAttributeName:[UIColor greenColor]} forState:UIControlStateNormal];
 
 //字体只有设置正常状态的字体有,选中状态的字体和正常状态下的字体一样
 [nav1.tabBarItem setTitleTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13], NSForegroundColorAttributeName:[UIColor orangeColor]} forState:UIControlStateSelected];

(5)同时设置所有的标签的字体和颜色(如果已经单独设置过字体和颜色后,使用这个方法再去设置就无效)

 [[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13], NSForegroundColorAttributeName:[UIColor purpleColor]} forState:UIControlStateNormal];
 [[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13], NSForegroundColorAttributeName:[UIColor blackColor]} forState:UIControlStateSelected];

6.将视图控制器对象交给标签栏控制器去管理

//添加单个NavigationController
[tabBar addChildViewController:vc];

//添加多个NavigationController
 tabBarC.viewControllers = @[nav1, nav2, nav3, nav4, nav5];

7.选中的标签下标(默认是0)

 //(可以获取也可以修改当前选中的下标的值)
 tabBarC.selectedIndex = 1;

8.将标签栏控制器作为window的根视图控制器

 self.window.rootViewController = tabBarC;

第二种方法.

(1)获取所有的tabBarItem

 UITabBarController * tabBarController = (UITabBarController *)_window.rootViewController;
 NSArray * tabBaritems = tabBarController.tabBar.items;
    ```

设置第三个item的属性
```objc
 UITabBarItem * item = tabBaritems[2];

 //设置正常状态的图片
 [item setImage:[UIImage imageNamed:@"zhuanti_u"]];
 [item setSelectedImage:[[UIImage imageNamed:@"zhuanti_d"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];

常用小方法

获取根视图控制器,TabBarController
//获取根视图控制器,TabBarController
ZBTabBarController *tabBarC = (ZBTabBarController *)[[UIApplication sharedApplication].keyWindow rootViewController];
修改tabBar选中的视图&获取tabBar的子视图控制器
//获取根视图控制器
ZBTabBarController *tabBarC = (ZBTabBarController *)[[UIApplication sharedApplication].keyWindow rootViewController];
//修改tabBar选中的视图
 tabBarC.selectedViewController = tabBarC.viewControllers[0];

//获取tabBar的子视图控制器
UINavigationController *na = tabBarC.viewControllers[0];
上一篇 下一篇

猜你喜欢

热点阅读