3.搭建项目基本框架
1.将Main拖入Main的文件夹中
2.选择Main 删掉默认的View Controller
![](https://img.haomeiwen.com/i3245733/56ad72c98df3e864.png)
3.拖入一个 Tab Bar Controller
![](https://img.haomeiwen.com/i3245733/41ff71205b14dfda.png)
拖入后显示
![](https://img.haomeiwen.com/i3245733/7e8d3e472b00df61.png)
4.设置拖入的Tab Bar Controller为默认启动控制器
![](https://img.haomeiwen.com/i3245733/8215a4572ba648d2.png)
5.默认拖入Tab bar 是没有上导航栏的,我们要给他们加上一个上导航栏
![](https://img.haomeiwen.com/i3245733/9c93207f66cf484f.png)
6.添加上导航栏效果:
![](https://img.haomeiwen.com/i3245733/67bb0de6c0684a3b.png)
7.我们下导航栏需要4个,需要再复制两个
![](https://img.haomeiwen.com/i3245733/779afafbed60fa5b.png)
8.设置相同的控制器
鼠标右键弹出
![](https://img.haomeiwen.com/i3245733/3b585ad51fbaee65.png)
运行看效果:
![](https://img.haomeiwen.com/i3245733/b9da52757202b075.png)
10.设置item的显示,先选中item,双击item,修改文字,
![](https://img.haomeiwen.com/i3245733/f9b569d88c2f0c8a.png)
11.导入图标,图标可划分文件夹进行导入Assets.xcassets
![](https://img.haomeiwen.com/i3245733/b60392968f74c007.png)
12.设置item 图标和修改item名字为home
1.到Assets 中拷贝需要设置的默认图标名,双击拷贝
![](https://img.haomeiwen.com/i3245733/648e8765f574d3f2.png)
2.设置itme名字,和输入图标名,回车显示
![](https://img.haomeiwen.com/i3245733/a5a5fb48260c6712.png)
同理设置其他的item的名字和图标,设置完后,运行程序
![](https://img.haomeiwen.com/i3245733/525083df957c7dd9.png)
13.设置item的图标的显示颜色:
1.AppDelegate全局修改Tab Bar 的颜色
![](https://img.haomeiwen.com/i3245733/0c0e50a726be1dcb.png)
//应用启动时,全局修改UITabBar的颜色,设置为橘色
UITabBar.appearance().tintColor = UIColor.orange
![](https://img.haomeiwen.com/i3245733/2d47d3c0a0723b8c.png)
14.重新运行程序
![](https://img.haomeiwen.com/i3245733/06efcc3bf5689483.png)
将下面的多个关系的Stroybord拆分:
![](https://img.haomeiwen.com/i3245733/3d14bd94f3247e37.png)
选中需要拆分的部分,选择Editor,中的 Refactor to Storyboard
![](https://img.haomeiwen.com/i3245733/b5b3b16c08182cc8.png)
创建选择文件夹的时候选择Base.lproj,在最后一步拖到对应文件夹中
![](https://img.haomeiwen.com/i3245733/ee6713eaa2213c73.png)
![](https://img.haomeiwen.com/i3245733/233ea92e00c193d0.png)
第二种方式创建:
用代码来创建关联:
,选中Refactor StoryBoard删除
在Main文件夹添加一个UITabBarController
![](https://img.haomeiwen.com/i3245733/7e643a6092501a78.png)
添加一个UITabBarController
![](https://img.haomeiwen.com/i3245733/f3facde793331541.png)
将MainViewController 和MainStoryBoard 关联
![](https://img.haomeiwen.com/i3245733/ff3c0d077e8fbc08.png)
//抽象一个添加Storyboard的方法
private func addChildVc(storyName:String)
{
//1.通过StoryBoard获取控制器,!解包
let childVc =UIStoryboard(name: storyName, bundle:nil).instantiateInitialViewController()!
//将childVc作为子控制器
addChildViewController(childVc)
}
![](https://img.haomeiwen.com/i3245733/3597d9243e97dd23.png)
运行效果跟之前是一样的
![](https://img.haomeiwen.com/i3245733/40b845843f9109b7.png)
![](https://img.haomeiwen.com/i3245733/dd14aa447349f21c.png)
代码优化:
这里添加控制器,是要添加首页,直播,关注,我的四个控制器,分别要调用
private fun caddChildVc(storyName:String) 四次
addChildVc(storyName:"Home")
addChildVc(storyName:"Live")
addChildVc(storyName:"Follow")
addChildVc(storyName:"Profile")
这里可以抽象一下传入一个数组:
//定义添加子控制器的方法,通过StoryBoard获取控制器,强制解包,传入一个数组
private func addChilVC(storyNames : [String]){
forstoryNameinstoryNames{
let chilVC =UIStoryboard(name: storyName, bundle:nil).instantiateInitialViewController()!
//将chilVC作为子控制器
addChildViewController(chilVC)
} }
调用一次:
addChilVC(storyNames: ["Home","Live","Follow","Profile"])
![](https://img.haomeiwen.com/i3245733/ff087c022d99c433.png)
运行效果一样: