1.将Main拖入Main的文件夹中
2.选择Main 删掉默认的View Controller
3.拖入一个 Tab Bar Controller
拖入后显示
4.设置拖入的Tab Bar Controller为默认启动控制器
5.默认拖入Tab bar 是没有上导航栏的,我们要给他们加上一个上导航栏
6.添加上导航栏效果:
7.我们下导航栏需要4个,需要再复制两个
8.设置相同的控制器
鼠标右键弹出
运行看效果:
10.设置item的显示,先选中item,双击item,修改文字,
11.导入图标,图标可划分文件夹进行导入Assets.xcassets
12.设置item 图标和修改item名字为home
1.到Assets 中拷贝需要设置的默认图标名,双击拷贝
2.设置itme名字,和输入图标名,回车显示
同理设置其他的item的名字和图标,设置完后,运行程序
13.设置item的图标的显示颜色:
1.AppDelegate全局修改Tab Bar 的颜色
//应用启动时,全局修改UITabBar的颜色,设置为橘色
UITabBar.appearance().tintColor = UIColor.orange
14.重新运行程序
将下面的多个关系的Stroybord拆分:
选中需要拆分的部分,选择Editor,中的 Refactor to Storyboard
创建选择文件夹的时候选择Base.lproj,在最后一步拖到对应文件夹中
第二种方式创建:
用代码来创建关联:
,选中Refactor StoryBoard删除
在Main文件夹添加一个UITabBarController
添加一个UITabBarController
将MainViewController 和MainStoryBoard 关联
//抽象一个添加Storyboard的方法
private func addChildVc(storyName:String)
{
//1.通过StoryBoard获取控制器,!解包
let childVc =UIStoryboard(name: storyName, bundle:nil).instantiateInitialViewController()!
//将childVc作为子控制器
addChildViewController(childVc)
}
运行效果跟之前是一样的
代码优化:
这里添加控制器,是要添加首页,直播,关注,我的四个控制器,分别要调用
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"])
运行效果一样: