ESTabBarController

SwiftPM compatible Carthage Compatible CocoaPods Swift v5 Twitter Twitter Chat Gitter.im

中文介绍

ESTabBarController 是一个高度可定制的 TabBarController 组件,它继承自 UITabBarController。

为什么使用 ESTabBarController?

在实际开发中,我们可能会遇到需要自定义 UITabBar 的情况。 例如:更改字体样式、添加动画以及使用更大的 item。 然而,使用 UITabBarItem 很难做到这一点。

使用 ESTabBarController,您可以轻松实现这些!

- 特性 描述
1 默认样式 您可以通过直接使用 ESTabBarController 初始化 TabBar 来获得类似系统的样式。

UITabBarController 样式

System native style

ESTabBarController 默认样式

ES system-like style
2 带有“更多”Item 的默认样式 如果 item 数量超过最大显示数量,则会出现“更多”item。

带有“更多”的 UITabBarController

enter image description here

带有“更多”的 ESTabBarController

enter image description here
3 混合使用 UITabBarItem 和 ESTabBarItem 您可以根据需要设置任何 item,包括 UITabBarItem 和 ESTabBarItem。

ESTabBar 和 UITabBar 混合样式

enter image description here

带有“更多”的 ESTabBar 和 UITabBar 混合样式

enter image description here
4 UIKit 属性 ESTabBarController 兼容 UITabBarController、UITabBar 和 UITabBarItem 的大多数 API 属性。 您可以迁移到 ESTabBarController,而无需修改原始代码。

兼容 UITabBarController 的 selectedIndex

enter image description here
5 与 UINavigationController 的任何嵌套 在使用UITabBarController开发时,有两种常见的处理层级关系的方式

第一种

├── UITabBarController

└──── UINavigationController

└────── UIViewController

└──────── SubviewControllers

第二种

├── UINavigationController

└──── UITabBarController

└────── UIViewController

└──────── SubviewControllers

在第一种情况下,推送子视图时需要设置 hidesBottomBarWhenPushed = true。 第二种情况则不需要。

在 ESTabBarController 中,向 UITabBar 添加容器视图以兼容这两种方式。
6 可定制的样式 使用 ESTabBarController,您可以:

1. 自定义选中 item 的颜色和样式

enter image description here

2. 添加选择动画

enter image description here

3. 自定义 item 的背景颜色

enter image description here

4. 添加高亮动画

enter image description here

5. 添加动画以提示用户

enter image description here

6. 还有更多 ...

7 可自定义 item 的大小

可自定义点击事件
您可以使用 ESTabBarController 轻松自定义 item 的大小。

当按钮的 frame 大于 TabBar 时,HitTest 使外部 TabBar 区域的点击有效。

此外,ESTabBarController 可以自定义点击事件,并通过 block 回调来处理上层逻辑。

TabBar 中间带有大的 item

enter image description here

带有特殊的提示样式

enter image description here

自定义点击事件

enter image description here
8 默认通知样式 您可以通过直接使用 ESTabBarController 初始化 TabBar 来获得类似系统的通知样式。

UITabBarController 通知样式

enter image description here

ESTabBarController 类似系统的通知样式

enter image description here
9 可自定义的通知样式 使用 ESTabBarController,您可以:

1. 自定义通知动画

enter image description here

enter image description here

2. 自定义提示样式

enter image description here

3. 还有更多 ...

10 Lottie 通过自定义 ContentView,您可以将 Lottie 的 LAAnimationView 添加到 Item(s)。

enter image description here

要求

示例

您可以下载并构建 ESTabBarControllerExample 项目,您将找到更多使用 ESTabBarController 的示例,以及更多自定义 UITabBar 的示例。

使用方法

Swift Package Manager

...
dependencies: [
    .package(name: "ESTabBarController", url: "https://github.com/eggswift/ESTabBarController.git", from: "2.9.0-spm")
]
...

CocoaPods

pod "ESTabBarController-swift"

Carthage

github "eggswift/ESTabBarController"

手动

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

待办事项 (TODO)

  1. 容器的布局纯粹基于代码,使用 Autolayout 会更好。
  2. 当存在“更多”选项时,如果编辑,会出现问题。
  3. 部分 UITabBarItem 属性未桥接到 ESTabBarItem。
  4. ESTabBarItemMoreContentView 中“更多”item 的图片尚未设置到框架中,计划将其转换为 CGBitmap。

赞助

您可以查看我们的赞助页面来支持该项目。只需点击一下

git-ad
此广告由 GitAds 投放

致谢

关于

ESTabBarController 由 Vincent Li 开发和维护。 如果您在使用 ESTabBarController 时有任何问题,欢迎 提出 issue
如果您想为 ESTabBarController 做出贡献,请提交 Pull Request,我会尽快处理。

Twitter URL Twitter Follow

许可协议

MIT 许可证 (MIT)

版权所有 (c) 2013-2016 eggswift。 保留所有权利。

特此授予任何人免费获得本软件和相关文档文件(“软件”)副本的许可,以便在不受限制的情况下处理本软件,包括但不限于使用、复制、修改、合并的权利、发布、分发、再许可和/或销售本软件的副本,并允许向其提供本软件的人员,但须符合以下条件

上述版权声明和本许可声明应包含在本软件的所有副本或主要部分中。

本软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于适销性、特定用途的适用性和非侵权性的保证。 在任何情况下,作者或版权持有者均不对任何索赔、损害或其他责任负责,无论是在合同、侵权或其他方面,因本软件或本软件的使用或其他交易而产生、产生或与之相关的责任。