为什么要使用?

在开发工作中,我们可能会遇到需要自定义UITabBar的情况。例如:改变文字样式、添加一些动画效果、设置一个比默认更大的样式等等,以上需求如果只通过UITabBarItem往往很难实现。

有了ESTabBarController,你可以轻松地实现这些!

- 功能 说明
1 支持默认样式 如果直接使用ESTabBarController进行初始化,你会得到与UITabBarController完全相同的仿系统样式 UITabBarController样式: ESTabBarController仿系统样式:
2 支持带有"More"的默认样式 使用ESTabBarController进行初始化,若item大于最大显示数量则显示"More",样式与UITabBarController一致 带有"More"的UITabBarController样式: 带有"More"的ESTabBarController样式:
3 支持UITabBarItem和ESTabBarItem混合 可以任意设置tabbar的items,支持即包含UITabBarItem,同时也包含ESTabBarItem ESTabBar和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可以实现: 1. 自定义选中颜色和样式 2. 添加选中时的动画效果 3. 自定义Item的背景颜色 4. 添加高亮时的动画效果 5. 添加一些动画暗示用户点击 6. 等等......
7 支持自定义按钮大小 支持自定义点击事件 ESTabBarController支持自定义按钮的大小,你可以轻松定制不规则大小的tab按钮。 当按钮frame大于TabBar时,通过HitTest方法使其超出TabBar区域点击仍然有效。 另外,ESTabBarController能够自定义点击事件,并通过一个block回调给上层处理。 中间带有较大按钮样式: 带有特殊提醒框样式: 自定义按钮点击事件:
8 支持默认通知样式 如果直接使用ESTabBarController进行初始化,你会得到与UITabBarController完全相同的仿系统通知样式 UITabBarController样式: ESTabBarController仿系统样式:
9 支持自定义通知样式 使用ESTabBarController可以实现: 1. 自定义提醒动画 2. 自定义提醒样式 3. 等等......
10 支持Lottie 通过自定义ContentView,能够添加Lottie的LAAnimationView到Item

支持环境

  • Xcode 8 or later
  • iOS 8.0 or later
  • ARC
  • Swift 3 or later

Demo

下载后运行ESTabBarControllerExample工程,你可以看到一些使用ESTabBarController实现的自定义TabBar的更多例子。

如何安装

CocoaPods

pod "ESTabBarController-swift"

Carthage

github "eggswift/ESTabBarController"

手动安装

git clone https://github.com/eggswift/ESTabBarController.git
open ESTabBarController

未完成的事

  1. Containers的布局方式目前是纯代码布局,使用Autolayout应该会更好。
  2. 当存在"More"时,若进行Edit会出现问题。
  3. UITabBarItem的部分属性还没有桥接到ESTabBarItem。
  4. ESTabBarItemMoreContentView中的"More"图片目前还未设置到framework中,计划将它转化为创建CGBitmap的代码。

感谢:

  • animated-tab-bar by http://ramotion.com
  • Example中部分图片资源来自 http://www.iconfont.cn

关于

ESTabBarController是由lihao开发和维护。如果你在使用过程中遇到什么疑问或任何问题,欢迎提交 issue 随时交流。
如果你想为ESTabBarController输出代码,请提交 Pull Request,我会尽可能快的去处理。

ESTabBarController相关推荐

  1. iOS开发第三方大全

    UI 下拉刷新 EGOTableViewPullRefresh- 最早的下拉刷新控件. SVPullToRefresh- 下拉刷新控件. MJRefresh- 仅需一行代码就可以为UITableVie ...

  2. iOS 常用第三方库及插件

    //菜单切换 https://github.com/pujiaxin33/JXCategoryView //各种导航栏样式 https://github.com/rickytan/RTRootNavi ...

  3. iOS开发之资料收集

    github排名:https://github.com/trending, github搜索:https://github.com/search. 此文章转自github:https://github ...

  4. iOS开发之swift资料大全

    目录(?)[+] 版本:Swift github排名 https://github.com/trending,github搜索:https://github.com/search 主要工作说明:  1 ...

  5. swift 学习资料大全

    版本:Swift github排名 https://github.com/trending,github搜索:https://github.com/search 主要工作说明:  1. 将Swift从 ...

  6. iOS- 资源大全中文版

    转https://github.com/jobbole/awesome-ios-cn iOS资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理. ...

  7. 常用的iOS第三方框架

    转载自:https://github.com/Tim9Liu9/TimLiu-iOS 目录 UI 下拉刷新 模糊效果 AutoLayout 富文本 图表 表相关与Tabbar 隐藏与显示 HUD与To ...

  8. 全面的Swift学习资料整理

    资料1 ---教程类 官方文档中文翻译http://wiki.jikexueyuan.com/project/swift/Github上的地址点我 Using Swift with Cocoa and ...

  9. 最完整版iOS资源大全中文版

    我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-ios 就是 vsouza 发起维护的 iOS 资源列表,内容包括:框架.组件.测试.App ...

最新文章

  1. KeyWordHelper-关键字提取类(注:使用第三方组件DictSeg.dll)
  2. CAP只能三选二,可以选CA吗?
  3. 眼球网站经济学之我见——在网站上建立现代的经济体系
  4. 将现有网站与Community Server2.0整合解决方案(原创)
  5. dalvik Java类库中本地类
  6. 使用2.26内核的linux,介绍linux 2.6.9-42内核升级到linux 2.6.26-42的方法
  7. 手机计算机数字显示在桌面上,手机计算器有哪些使用方法
  8. makefile 的export问题
  9. Linux 系统中的dvfs功能
  10. 【Codeforces Round #442 (Div. 2) A】Alex and broken contest
  11. python土味情话_Python 将土味情话语录设置为桌面壁纸
  12. android文件管理器--界面效果二(layout)
  13. 数据结构与算法14-栈和队列练习题
  14. 处理非window设置为window的Owner
  15. c语言负数除法运算过程,C语言负数的除法和求余运算
  16. 2021 运维面试1800道题 都掌握 面试已经无敌了 看答案来吧
  17. apollo学习之:如何测试canbus模块
  18. 意间ai绘画怎么输入关键词,让图片变得好看?
  19. 广州科二化龙考场_广州化龙科目二?
  20. SOLIDWORKS零件与装配体模板制作

热门文章

  1. AS3版本的MaxRects算法测试
  2. C#实现Des加密和解密
  3. scanf()函数的用法和实践
  4. 损失函数之Cross-Entropy介绍及C++实现
  5. matlab常遇小问题汇总
  6. 【摄像头】摄像头相关名词解释
  7. 【POCO】POCO学习总结(三)——交叉编译
  8. mysql编程的二维数组_调出mysql中数据,输出一个二维数组的表格
  9. linux简单目录,Linux下各目录简单整理
  10. oracle schema与mysql_Oracle数据库之Oracle 11g R2 用户与模式(schema)