一、分栏控制器基础
1.基本概念
分栏控制器是管理多个视图控制器的管理控制器,通过数组的方式管理多个平行关系的视图控制器,与导航控制器的区别在于:导航控制器管理的是有层级关系的控制器。
分栏控制器在同一界面最多显示5个控制器切换按钮,超过5个时会自动创建一个新的导航控制器来管理其余的控制器。
2.基本属性
UITabBarltem :分栏按钮元素对象
badgeValue:分栏按钮提示信息
selectedindex:分栏控制器选中的控制器索引
viewControllers:分栏控制器管理数组
selectedViewController:分栏控制器选中的控制器对象
3.基本用法
首先我们创建三个视图控制器
接着我们在SceneDelegate.m文件中创建三个视图控制器对象
//显示window
[self.window makeKeyAndVisible];
//创建视图控制器一
VCFirst* vcFirst = [[VCFirst alloc] init];
vcFirst.view.backgroundColor = [UIColor blueColor];
//创建视图控制器二
VCSecond* vcSecond = [[VCSecond alloc] init];
vcSecond.view.backgroundColor = [UIColor yellowColor];
//创建视图控制器三
VCThird* vcThird = [[VCThird alloc] init];
vcThird.view.backgroundColor = [UIColor orangeColor];
vcFirst.title = @"视图1";
vcSecond.title = @"视图2";
vcThird.title = @"视图3";
然后我们创建分栏控制器对象并进行如下操作:
//创建分栏控制器对象
UITabBarController* tbController = [[UITabBarController alloc] init];
//创建一个控制器数组对象
//将所有要被分栏控制器管理的对象添加到数组中
NSArray* arrayVC = [NSArray arrayWithObjects:vcFirst, vcSecond, vcThird, nil];
//将分栏控制器管理数组赋值
tbController.viewControllers = arrayVC;
//将分栏控制器作为根视图控制器
self.window.rootViewController = tbController;
//设置选中的视图控制器的索引
//通过索引来确定显示哪一个控制器
tbController.selectedIndex = 2;
//设置分栏控制器的工具栏的透明度
tbController.tabBar.translucent = NO;
由于我们设置优先显示的视图是索引为2的视图,因此当我们运行时会先显示视图三
运行结果如下:
如果分栏控制器中没有按钮的话,默认情况下我们设置的title值会占用按钮的位置。
下面设置分栏按钮
创建分栏按钮有两种方法,第一种是自定义创建一个图片按钮
//自定义创建分栏按钮
//P1:文字
//P2:显示图片图标
//P3:设置按钮的tag
UITabBarItem* tabBarItem = [[UITabBarItem alloc] initWithTitle:@"按钮" image:nil tag:101];
第二种是根据系统风格创建分栏按钮
这里我设置的是系统的联系人按钮
UITabBarItem* tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemContacts tag:101];
//按钮右上角的提示信息
//通常用来提示未读的信息
tabBarItem.badgeValue = @"22";
self.tabBarItem = tabBarItem;
运行结果如下:
我在VCFirst.m中进行创建分栏按钮,可以看到我们先前的视图一已经被联系人按钮所替换,并且按钮右上角就是我们设置的badgeValue值
二、分栏控制器高级
1.高级属性
我们先创建6个视图控制器
接着我们创建上面那6个视图控制器的对象
//创建一组视图控制器
VCFirst* vc01 = [[VCFirst alloc] init];
VCSecond* vc02 = [[VCSecond alloc] init];
VCThird* vc03 = [[VCThird alloc] init];
VCFourth* vc04 = [[VCFourth alloc] init];
VCFifth* vc05 = [[VCFifth alloc] init];
VCSixth* vc06 = [[VCSixth alloc] init];
//设置背景颜色
vc01.view.backgroundColor = [UIColor redColor];
vc02.view.backgroundColor = [UIColor orangeColor];
vc03.view.backgroundColor = [UIColor yellowColor];
vc04.view.backgroundColor = [UIColor greenColor];
vc05.view.backgroundColor = [UIColor blueColor];
vc06.view.backgroundColor = [UIColor purpleColor];
vc01.title = @"视图1";
vc02.title = @"视图2";
vc03.title = @"视图3";
vc04.title = @"视图4";
vc05.title = @"视图5";
vc06.title = @"视图6";
接着我们创建分栏控制器对象并设置属性
NSArray* arrayVC = [NSArray arrayWithObjects:vc01, vc02, vc03, vc04, vc05, vc06, nil];
UITabBarController* tbController = [[UITabBarController alloc] init];
tbController.viewControllers = arrayVC;
self.window.rootViewController = tbController;
//改变工具栏颜色
tbController.tabBar.backgroundColor = [UIColor clearColor];
//改变按钮文字颜色
tbController.tabBar.tintColor = [UIColor blackColor];
运行结果如下:
可以看到我们工具栏中只有四个视图,当我们点击More时会显示剩下的两个视图。当我们点击右上角的Edit进入如下界面就可以将视图的位置进行调换
总结
以上就是本篇文章的全部内容。