

ESTabBarController 是一个高度可定制的 TabBarController 组件,它继承自 UITabBarController。
为什么使用 ESTabBarController?
在实际开发中,我们可能会遇到需要自定义 UITabBar 的情况。 例如:更改字体样式、添加动画以及使用更大的 item。 然而,使用 UITabBarItem 很难做到这一点。
使用 ESTabBarController,您可以轻松实现这些!
- |
特性 |
描述 |
1 |
默认样式 |
您可以通过直接使用 ESTabBarController 初始化 TabBar 来获得类似系统的样式。UITabBarController 样式 ESTabBarController 默认样式  |
2 |
带有“更多”Item 的默认样式 |
如果 item 数量超过最大显示数量,则会出现“更多”item。带有“更多”的 UITabBarController 带有“更多”的 ESTabBarController  |
3 |
混合使用 UITabBarItem 和 ESTabBarItem |
您可以根据需要设置任何 item,包括 UITabBarItem 和 ESTabBarItem。ESTabBar 和 UITabBar 混合样式 带有“更多”的 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. 自定义选中 item 的颜色和样式 2. 添加选择动画 3. 自定义 item 的背景颜色 4. 添加高亮动画 5. 添加动画以提示用户 6. 还有更多 ... |
7 |
可自定义 item 的大小可自定义点击事件 |
您可以使用 ESTabBarController 轻松自定义 item 的大小。 当按钮的 frame 大于 TabBar 时,HitTest 使外部 TabBar 区域的点击有效。 此外,ESTabBarController 可以自定义点击事件,并通过 block 回调来处理上层逻辑。TabBar 中间带有大的 item 带有特殊的提示样式 自定义点击事件  |
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 的示例。
...
dependencies: [
.package(name: "ESTabBarController", url: "https://github.com/eggswift/ESTabBarController.git", from: "2.9.0-spm")
]
...
pod "ESTabBarController-swift"
github "eggswift/ESTabBarController"
git clone https://github.com/eggswift/ESTabBarController.git
open ESTabBarController
- 容器的布局纯粹基于代码,使用 Autolayout 会更好。
- 当存在“更多”选项时,如果编辑,会出现问题。
- 部分 UITabBarItem 属性未桥接到 ESTabBarItem。
ESTabBarItemMoreContentView 中“更多”item 的图片尚未设置到框架中,计划将其转换为 CGBitmap。
赞助
您可以查看我们的赞助页面来支持该项目。只需点击一下
此广告由 GitAds 投放
ESTabBarController 由 Vincent Li 开发和维护。 如果您在使用 ESTabBarController 时有任何问题,欢迎 提出 issue。
如果您想为 ESTabBarController 做出贡献,请提交 Pull Request,我会尽快处理。

MIT 许可证 (MIT)
版权所有 (c) 2013-2016 eggswift。 保留所有权利。
特此授予任何人免费获得本软件和相关文档文件(“软件”)副本的许可,以便在不受限制的情况下处理本软件,包括但不限于使用、复制、修改、合并的权利、发布、分发、再许可和/或销售本软件的副本,并允许向其提供本软件的人员,但须符合以下条件
上述版权声明和本许可声明应包含在本软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于适销性、特定用途的适用性和非侵权性的保证。 在任何情况下,作者或版权持有者均不对任何索赔、损害或其他责任负责,无论是在合同、侵权或其他方面,因本软件或本软件的使用或其他交易而产生、产生或与之相关的责任。