UIKit - UITabBarController

UITabBarController是一个导航控制器,它管理着多个控制器的相互跳转!

1.创建

//初始化各页面控制器(可以是普通Controoler,也可以是UINavigationController)
let homeController = ViewController()
let homeTab = UINavigationController(rootViewController: homeController)
let imageTab = ImagesTabController()
let msgTab  = MsgTabController()
let setTab  = SetTabController()

//将视图控制器加入到TabBar控制器中 
let tabController = UITabBarController()
    tabController.viewControllers = [homeTab,imageTab,msgTab,setTab]

//将TabBar作为根视图控制器
self.window?.rootViewController = tabController

2.创建TabBar的Item

//设置Tabbar标题
let itemHome = UITabBarItem(title: "首页", image: UIImage(named:"home")?.withRenderingMode(.alwaysOriginal), selectedImage: UIImage(named:"home")?.withRenderingMode(.alwaysOriginal))
    homeTab.tabBarItem = itemHome

let itemImage = UITabBarItem(title: "图库", image: UIImage(named:"images")?.withRenderingMode(.alwaysOriginal), selectedImage: UIImage(named:"images")?.withRenderingMode(.alwaysOriginal))
    imageTab.tabBarItem = itemImage

let itemMsg = UITabBarItem(title: "消息", image: UIImage(named:"message")?.withRenderingMode(.alwaysOriginal), selectedImage: UIImage(named:"message")?.withRenderingMode(.alwaysOriginal))
    itemMsg.badgeValue = "5"    //设置消息数
    msgTab.tabBarItem = itemMsg

let itemSet = UITabBarItem(title: "我的", image: UIImage(named:"setting")?.withRenderingMode(.alwaysOriginal), selectedImage: UIImage(named:"setting")?.withRenderingMode(.alwaysOriginal))
    setTab.tabBarItem = itemSet        

注:如果图片不使用withRenderingMode方法,图片将被渲染成一个统一颜色的色块,使用withRenderingMode(.alwaysOriginal)可以显示原图样式

3.设置TabBar样式

//背景色
tabController.tabBar.barTintColor = UIColor.white

//设置TabBar未选中文字颜色
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.blue], for: .normal)
//设置TabBar选中文字颜色           
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.red], for: .selected)

4.设置默认选中TabBarItem

tabController.selectedIndex = 0

5.代理方法

self.delegate = (self as UITabBarControllerDelegate)
//切换时被调用 
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) { 
    NSLog("发生切换") 
} 

//是否可以选择控制器(true:可以选择;false:不可以选择) 
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool { 
//先获取当前UITabBarController的子对象
    let childsVc = tabBarController.viewControllers! as NSArray 
    let selecdIndex : Int = childsVc.index(of: viewController) 
    if selecdIndex == 1 { 
        return false 
    } 
    return true 
} 

//TabBar的Items个数大于5个的时候,第5个变成MORE,当开始编辑tabbar并调整tabbar的位置时,调用该函数
func tabBarController(_ tabBarController: UITabBarController, willBeginCustomizing viewControllers: [UIViewController]) { 
    NSLog("开始编辑") 
} 

//TabBar在MORE的时候,在编辑将要完成的时候调用该函数 
func tabBarController(_ tabBarController: UITabBarController, willEndCustomizing viewControllers: [UIViewController], changed: Bool) {
    NSLog("即将完成")
 }

//TabBar结束编辑的时候调用该函数 
func tabBarController(_ tabBarController: UITabBarController, didEndCustomizing viewControllers: [UIViewController], changed: Bool) { 
    NSLog("编辑完成")
}

6.tabbar常用设置

//隐藏当前页面tabbar
self.tabBarController?.tabBar.isHidden=true

效果如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值