最近在OC的基础上开始学习swift,以下是swift纯代码搭建项目架构效果图
创建一个项目 选择swift语言
将项目中的main.storyboard ,ViewController ,LaunchScreen.storyboard 删除,并将main取消为主窗口
以上操作跟OC纯代码项目架构操作一样,接下来直接上代码
在AppDelegate 类中创建主窗口并设置根控制器
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow.init()
self.window?.frame = UIScreen.main.bounds
self.window?.rootViewController = QCTabBarController()
self.window?.makeKeyAndVisible()
return true
}
自定义一个QCTabBarController继承自UITabBarController ,在该控制器中添加子控制器如下:
override func viewDidLoad() {
super.viewDidLoad()
//首页
let homeVC = QCHomeVC()
self.addChildViewController(childerVC: homeVC, title: "首页", normalImg: "shouye_normal", selectedImg: "shouye_selected")
//嘉宝箱
let treasureBoxVC = QCTreasureBoxVC()
self.addChildViewController(childerVC: treasureBoxVC, title: "嘉宝箱", normalImg: "jiabaoxiang_normal", selectedImg: "jiabaoxiang_selected")
//我嘉
let myShowVC = QCMyShowVC()
self.addChildViewController(childerVC: myShowVC, title: "我嘉", normalImg: "shouye_normal", selectedImg: "shouye_selected")
//会员中心
let memberCenterVc = QCMemberCenterVC()
self.addChildViewController(childerVC: memberCenterVc, title: "会员中心", normalImg: "huiyuan_normal", selectedImg: "huiyuan_selected")
self.selectedIndex = 0
}
//添加子控制器
func addChildViewController(childerVC:UIViewController,title:NSString,normalImg:NSString,selectedImg:NSString) {
self.tabBarItem.title = title as String
let color = UIColor.hexStringToColor(hexString:"#3257d4")
self.tabBar.tintColor = color
childerVC.title = title as String
var norImg = UIImage(named:normalImg as String)
norImg = norImg?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
var selImg = UIImage(named:selectedImg as String)
selImg = selImg?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
let tabItem = UITabBarItem(title: title as String, image: norImg,selectedImage: selImg)
let naVc = QCNaVC()
naVc.tabBarItem = tabItem
naVc.addChildViewController(childerVC)
self.addChildViewController(naVc)
}