

ESTabBarController 是一个高度可定制的 TabBarController 组件,它继承自 UITabBarController。
为什么?
在实际开发中,我们可能会遇到需要自定义 UITabBar 的情况。例如:更改字体样式、添加动画、使用更大的项目。然而,使用 UITabBarItem 很难做到这些。
使用 ESTabBarController,您可以轻松实现这些功能!
- |
特性 |
描述 |
1 |
默认样式 |
您可以通过直接使用 ESTabBarController 初始化 TabBar 来获得类似系统的样式。UITabBarController 样式 ESTabBarController 默认样式  |
2 |
带有“更多”项的默认样式 |
如果项目数超过显示的最大数,将出现“更多”项。带有“更多”的 UITabBarController 带有“更多”的 ESTabBarController  |
3 |
Mixed UITabBarItem 和 ESTabBarItem |
您可以按需设置任何项,包括 UITabBarItem 和 ESTabBarItem。Mixed ESTabBar 和 UITabBar 样式 Mixed ESTabBar 和 UITabBar 样式,带有“更多”项  |
4 |
UIKit 属性 |
ESTabBarController 兼容 UITabBarController,UITabBar 和 UITabBarItem 的大多数 API 属性。您可以在不对原始代码进行任何修改的情况下迁移到 ESTabBarController。兼容 UITabBarController 的 selectedIndex  |
5 |
与 UINavigationController 的任何嵌套 |
使用 UITabBarController 进行开发时,有两种处理层次结构的方法第一├── UITabBarController└──── UINavigationController└────── UIViewController└──────── SubviewControllers第二├── UINavigationController└──── UITabBarController└────── UIViewController└──────── SubviewControllers在第一种情况下,在推送子视图时需要设置 hidesBottomBarWhenPushed = true 。第二种则不需要。在 ESTabBarController 中,通过向 UITabBar 中添加容器视图来兼容这两种方式。 |
6 |
可定制样式 |
使用 ESTabBarController,您可以:1. 自定义选中项的颜色和样式 2. 添加选中动画 3. 自定义项目背景颜色 4. 添加高亮动画 5. 为提示用户添加动画 6. 还有更多... |
7 |
可自定义项目的大小可自定义点击事件 |
您可以使用ESTabBarController轻松自定义项目的大小。 当按钮的frame大于TabBar时,通过使用HitTest可以实现使外围TabBar区域点击有效。 此外,ESTabBarController可以自定义点击事件,并通过一个block回调到上级层处理。TabBar中间的大项目 特殊提示样式 自定义点击事件  |
8 |
默认通知样式 |
您可以通过直接使用ESTabBarController初始化TabBar来获得类似系统通知的样式。UITabBarController通知样式 ESTabBarController系统类似通知样式  |
9 |
可自定义通知样式 |
使用 ESTabBarController,您可以:1. 自定义通知动画 2. 自定义提示样式 3. 还有更多... |
10 |
Lottie |
通过自定义ContentView,您可以将Lottie的LAAnimationView添加到Item(s)  |
需求
- Xcode 8或更高版
- iOS 8.0或更高版
- ARC
- Swift 5或更高版
示例
您可以下载并构建ESTabBarControllerExample项目,在那里您将找到使用ESTabBarController的更多示例,以及自定义UITabBar的更多示例。
使用方法
CocoaPods
pod "ESTabBarController-swift"
Carthage
github "eggswift/ESTabBarController"
手动
git clone https://github.com/eggswift/ESTabBarController.git
open ESTabBarController
待办
- 容器的布局完全基于代码,使用自动布局会更好。
- 当有“更多”时,如果编辑它会发生问题。
- 部分UITabBarItem属性没有桥接到ESTabBarItem。
ESTabBarItemMoreContentView中“更多”项的图片尚未设置为框架,计划将其转换为CGBitmap。
致谢
关于
ESTabBarController是由Vincent Li开发和维护的。如果您在使用ESTabBarController时有任何问题或问题,欢迎使用问题。
如果您想为ESTabBarController做出贡献,请提交Pull Request,我将尽快处理。

许可
MIT 许可协议 (MIT)
版权所有 © 2013-2016 eggswift。保留所有权利。
特此授予任何获取此软件及其相关文档(“软件”)副本的人免费使用权,不受限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、许可和/或销售软件副本,并允许获得该软件的人这样做,但须遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的还是隐含的,包括但不限于适销性、特定用途的适用性和非侵权性。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他行为,无论是由于、来自或与软件或其使用或其他软件的处理方式有关。