UITabBarController的基本原理及使用(二)
继续我们的UITabBarController探索之旅,如果你错过了之前的文章,给你一个传送门,建议按顺序阅读。UITabBarController的基本原理及使用(一)
继续第一回往下讲,前面我们已经给tabbar添加了2个子控制器,我们再在这个基础上添加2个子控制器,命名为ThirdViewController和FourthViewController。
创建好控制器记得添加到tabar控制器里面。
添加tabar按钮
//设置tabbar按钮标题
firstVC.tabBarItem.title = @"微信";
//设置tabbar按钮图片,图片可以自行网上搜索,建议32*32大小。
firstVC.tabBarItem.image = [UIImage imageNamed:@"微信"];
//设置tabbar小红点
firstVC.tabBarItem.badgeValue = @"10";
设置好后运行一下程序。
是不是有点微信的样子了?我们继续把剩下3个子控制器按钮的样式进行设置。
//设置tabbar按钮标题
firstVC.tabBarItem.title = @"微信";
secondVC.tabBarItem.title = @"通讯录";
thirdVC.tabBarItem.title = @"发现";
fourthVC.tabBarItem.title = @"我";
//设置tabbar按钮图片
firstVC.tabBarItem.image = [UIImage imageNamed:@"微信"];
secondVC.tabBarItem.image = [UIImage imageNamed:@"微信通讯录"];
thirdVC.tabBarItem.image = [UIImage imageNamed:@"微信发现"];
fourthVC.tabBarItem.image = [UIImage imageNamed:@"微信通讯录"];
//设置tabbar小红点
firstVC.tabBarItem.badgeValue = @"10";
运行程序观察效果。
tabbar的四个子控制器都有了自己的图标样式。如果你找不到素材源,我提供一个:素材网站
微信图标选中时会将图标渲染成绿色,而tabbar系统默认的是蓝色,我们需要修改主是颜色。
//修改主题颜色,注意是对tabbar控制器进行修改。
tabBarViewController.tabBar.tintColor = [UIColor greenColor];
可以看到,选中的图标变成了绿色,不过微信的好像是浅绿色,没找到他们的配色方案,先用标准绿色代替了。另外,选中的图标也可以设置成为其它图标,大家可以自行尝试。
//设置选中图标时的图像展示。
firstVC.tabBarItem.selectedImage = [UIImage imageNamed:@"微信通讯录"];
Storyboard创建UITabBarController
下面,我们通过storyboard的方式来实现同样的效果。
Main.storyboard默认的控制器是UIViewController,我们先删除掉。选中Main.storyboard文件,在右侧窗口选择View Controller Scene,按键盘删除键清除默认的控制器。
从右侧窗口的控件栏拖入一个UITabBarController到主界面,并勾选is Initial View Controller
。这个选项的意思是设置选中的控制器为程序的入口,任何程序必须有且只有一个入口。
回想一下之前我们是怎么给tabbar添加子控制器的,我们通过代码建立了4个控制器并使用addChildViewController方法将4个控制器设为tabbar的子控制器。在storyboard里,我们不用写一行代码,一个“拖”字诀走天下。
在右侧控件栏拖入4个ViewController。
然后选中TabBarController,按住Ctrl键的同时再按住鼠标左键,拖出一条线指向第一个ViewController,放开鼠标后会弹出一个窗口。
选择图中所示的view controllers
,这就代表指向的ViewController已成为tabbar控制器的第一个子控制器。
照这个操作方法,将另外三个控制器设置为tabbar的子控制器。
我们可以看到tabbar控制器底部的导航栏已经自动出现了4个按钮,再进行一些初始化设置。
选中一个子控制器的导航栏,右侧窗口区会出现导航栏的部分可设置属性,很熟悉对不对,title和image我们前面用代码实现的时候就用到过,请你动手设置一下,看看是否和代码拥有一样的效果。
小结
- UITabBarController实际上就是一个管理控制器的控制器;
- 通过addChildViewController方法添加子控制器;
- 存在多个子控制器的情况下通过selectedIndex属性设置哪个控制器为选择并显示的状态。
- 导航栏默认高为64;
- tabbar控制器可以在子控制器之间方便的切换(前台通过点击导航按钮,后台使用selectIndex属性)。