【iOS】Swift ESTabBarController的使用

本文介绍如何在Swift项目中使用ESTabBarController,包括系统原生方式、自定义选中颜色、不规则中部大按钮以及Lottie动画支持。通过实例展示了其高度自定义的特点,并提供了官方文档和Demo参考。

之前也使用Swift编写过程序,但是由于是多人开发,我没有从头搭建,而且之前写的项目也是多使用oc的库。我就打算从头抓包写一个纯Swift的APP。我打算先写一个简单的APP,熟练之后在写比较复杂的APP。具体代码之后会传到我的github上面。

在搭建框架的时候发现了这个swift编写的tabbar控制器。用起来感觉不错。他可以高度自定义。具体效果可以看官方文档

但是他还是有一些不足的。这是暂时不支持的功能

/*
 * ESTabBarItem继承自UITabBarItem,目的是为ESTabBarItemContentView提供UITabBarItem属性的设置。
 * 目前支持大多常用的属性,例如image, selectedImage, title, tag 等。
 *
 * Unsupport properties:
 *  MARK: UIBarItem properties
 *      1. var isEnabled: Bool
 *      2. var landscapeImagePhone: UIImage?
 *      3. var imageInsets: UIEdgeInsets
 *      4.  var landscapeImagePhoneInsets: UIEdgeInsets
 *      5. func setTitleTextAttributes(_ attributes: [String : Any]?, for state: UIControlState)
 *      6. func titleTextAttributes(for state: UIControlState) -> [String : Any]?
 *  MARK: UITabBarItem properties
 *      7. var titlePositionAdjustment: UIOffset
 *      8. func setBadgeTextAttributes(_ textAttributes: [String : Any]?, for state: UIControlState)
 *      9. func badgeTextAttributes(for state: UIControlState) -> [String : Any]?
 */

如果你需要上面的功能,就可以停止往下看了。

 

 

 

 

 

 

你既然看到了这里就说明你需要使用这个库。现把使用方法列出。

1. 系统原生(通过tintColor修改选中颜色)

     let tabBarController = ESTabBarController()
        let v1 = HomeViewController()
        let v2 = HomeViewController()
        let v3 = HomeViewController()
        let v4 = HomeViewController()
        let v5 = HomeViewController()
        
        /// MARK: 使用原生 
        v1.tabBarItem = UITabBarItem.init(title: "", image: UIImage(named: "btn_home"), selectedImage: UIImage(named: "btn_home_highlight"))
        v2.tabBarItem = UITabBarItem.init(title: "", image: UIImage(named: "btn_category"), selectedImage: UIImage(named: "btn_category_highlight"))
        v3.tabBarItem = UITabBarItem.init(title: "", image: UIImage(named: "btn_rank"), selectedImage: UIImage(named: "btn_rank_highlight"))
        v4.tabBarItem = UITabBarItem.init(title: "", image: UIImage(named: "btn_random"), selectedImage: UIImage(named: "btn_random_highlight"))
        v5.tabBarItem = UITabBarItem.init(title: "", image: UIImage(named: "btn_favourite"), selectedImage: UIImage(named: "btn_favourite_highlight"))
       
     UITabBar.appearance().tintColor
= UIColor.red tabBarController.tabBar.shadowImage = nil tabBarController.viewControllers = [v1, v2, v3, v4, v5]
     // 不需要导航栏的话 直接 rootviewcontroller =
tabBarController

let navigationController = UINavigationController.init(rootViewController: tabBarController)
    APP_DELEGATE?.window?.rootViewController = navigationController

2. ESTabBarController仿系统原生(设置tintColor没反应)

        let tabBarController = ESTabBarController()
        let v1 = HomeViewController()
        let v2 = HomeViewController()
        let v3 = HomeViewController()
        let v4 = HomeViewController()
        let v5 = HomeViewController()
        
        /// MARK: 仿原生 设置 但是不能修改选
ESTabBarController 是一个高度自定义的 TabBarController 组件,继承自 UITabBarController,可轻松自定义 UI 样式,添加动画等。功能1、支持默认样式如果直接使用ESTabBarController进行初始化,你会得到与UITabBarController完全相同的仿系统样式UITabBarController样式:ESTabBarController仿系统样式:2、支持带有"More"的默认样式使用ESTabBarController进行初始化,若item大于最大显示数量则显示"More",样式与UITabBarController一致带有"More"的UITabBarController样式:带有"More"的ESTabBarController样式:3、支持UITabBarItem和ESTabBarItem混合可以任意设置tabbar的items,支持即包含UITabBarItem,同时也包含ESTabBarItemESTabBar和UITabBar混合样式:带有'More'的ESTabBar和UITabBar混合样式:4、支持UIKit属性支持UITabBarController、UITabBar和UITabBarItem的大部分api属性,使原有代码无需任何修改即可无缝迁移到ESTabBarController支持UITabBarController的selectedIndex属性的实现:5、支持与UINavigationController任意嵌套通常在使用UITabBarController过程中,会存在两种比较常见的层级处理方式:第一种:├── UITabBarController└──── UINavigationController└────── UIViewController└──────── SubviewControllers第二种:├── UINavigationController└──── UITabBarController└────── UIViewController└──────── SubviewControllers第一种情况在push子视图的时候需要设置 hidesBottomBarWhenPushed = true , 第二种则不需要在ESTabBarController中,通过添加Container视图到UITabBar的方式来兼容这两种层级处理方式。6、支持自定义使用ESTabBarController可以实现:自定义选中颜色和样式添加选中时的动画效果自定义Item的背景颜色添加高亮时的动画效果添加一些动画暗示用户点击等等...... 7、支持自定义按钮大小,支持自定义点击事件ESTabBarController支持自定义按钮的大小,你可以轻松定制不规则大小的tab按钮。当按钮frame大于TabBar时,通过HitTest方法使其超出TabBar区域点击仍然有效。 另外,ESTabBarController能够自定义点击事件,并通过一个block回调给上层处理。中间带有较大按钮样式:带有特殊提醒框样式:自定义按钮点击事件:8、支持默认通知样式如果直接使用ESTabBarController进行初始化,你会得到与UITabBarController完全相同的仿系统通知样式UITabBarController样式:ESTabBarController仿系统样式:9、支持自定义通知样式使用ESTabBarController可以实现:自定义提醒动画自定义提醒样式等等...... 10、支持Lottie通过自定义ContentView,能够添加Lottie的LAAnimationView到Item支持环境Xcode 8 or lateriOS 8.0 or laterARCSwift 3 or later
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值