ESTabBarController是一個(gè)高度自定義的TabBarController組件,繼承自UITabBarController最住。
為什么要使用?
在開發(fā)工作中怠惶,我們可能會(huì)遇到需要自定義UITabBar的情況。例如:改變文字樣式仗岖、添加一些動(dòng)畫效果览妖、設(shè)置一個(gè)比默認(rèn)更大的樣式等等,以上需求如果只通過UITabBarItem往往很難實(shí)現(xiàn)檩电。
有了ESTabBarController,你可以輕松地實(shí)現(xiàn)這些料按!
- | 功能 | 說明 |
---|---|---|
1 | 支持默認(rèn)樣式 | 如果直接使用ESTabBarController進(jìn)行初始化卓箫,你會(huì)得到與UITabBarController完全相同的仿系統(tǒng)樣式 </p> UITabBarController樣式: </p> |
2 | 支持帶有"More"的默認(rèn)樣式 | 使用ESTabBarController進(jìn)行初始化烹卒,若item大于最大顯示數(shù)量則顯示"More",樣式與UITabBarController一致 </p> 帶有"More"的UITabBarController樣式: </p> |
3 | 支持UITabBarItem和ESTabBarItem混合 | 可以任意設(shè)置tabbar的items逢勾,支持即包含UITabBarItem藐吮,同時(shí)也包含ESTabBarItem </p> ESTabBar和UITabBar混合樣式: </p> |
4 | 支持UIKit屬性 | 支持UITabBarController谣辞、UITabBar和UITabBarItem的大部分api屬性,使原有代碼無(wú)需任何修改即可無(wú)縫遷移到ESTabBarController </p> 支持UITabBarController的selectedIndex屬性的實(shí)現(xiàn): </p> |
5 | 支持與UINavigationController任意嵌套 | 通常在使用UITabBarController 過程中攒菠,會(huì)存在兩種比較常見的層級(jí)處理方式: </p> 第一種: </p> ├── UITabBarController </p> └──── UINavigationController </p> └────── UIViewController </p> └──────── SubviewControllers </p> 第二種: </p> ├── UINavigationController </p> └──── UITabBarController </p> └────── UIViewController </p> └──────── SubviewControllers </p> 第一種情況在push子視圖的時(shí)候需要設(shè)置 hidesBottomBarWhenPushed = true , 第二種則不需要 </p> 在ESTabBarController中辖众,通過添加Container視圖到UITabBar的方式來兼容這兩種層級(jí)處理方式和敬。 |
6 | 支持自定義 | 使用ESTabBarController可以實(shí)現(xiàn):</p> 1. 自定義選中顏色和樣式 </p> |
7 | 支持自定義按鈕大小 </p> 支持自定義點(diǎn)擊事件 | ESTabBarController支持自定義按鈕的大小昼弟,你可以輕松定制不規(guī)則大小的tab按鈕。</p> 當(dāng)按鈕frame大于TabBar時(shí)变骡,通過HitTest方法使其超出TabBar區(qū)域點(diǎn)擊仍然有效芭逝。 </p> 另外,ESTabBarController能夠自定義點(diǎn)擊事件台妆,并通過一個(gè)block回調(diào)給上層處理。 </p> 中間帶有較大按鈕樣式: </p> |
8 | 支持默認(rèn)通知樣式 | 如果直接使用ESTabBarController進(jìn)行初始化切厘,你會(huì)得到與UITabBarController完全相同的仿系統(tǒng)通知樣式 </p> UITabBarController樣式: </p> |
9 | 支持自定義通知樣式 | 使用ESTabBarController可以實(shí)現(xiàn):</p> 1. 自定義提醒動(dòng)畫 </p> |
10 | 支持Lottie | 通過自定義ContentView疫稿,能夠添加Lottie的LAAnimationView到Item </p> |
支持環(huán)境
- Xcode 8 or later
- iOS 8.0 or later
- ARC
- Swift 3 or later
Demo
下載后運(yùn)行ESTabBarControllerExample工程而克,你可以看到一些使用ESTabBarController實(shí)現(xiàn)的自定義TabBar的更多例子怔毛。
如何安裝
CocoaPods
pod "ESTabBarController-swift"
Carthage
github "eggswift/ESTabBarController"
手動(dòng)安裝
git clone https://github.com/eggswift/ESTabBarController.git
open ESTabBarController
未完成的事
- Containers的布局方式目前是純代碼布局腾降,使用Autolayout應(yīng)該會(huì)更好。
- 當(dāng)存在"More"時(shí)抗果,若進(jìn)行Edit會(huì)出現(xiàn)問題奸晴。
- UITabBarItem的部分屬性還沒有橋接到ESTabBarItem。
- ESTabBarItemMoreContentView中的"More"圖片目前還未設(shè)置到framework中逮光,計(jì)劃將它轉(zhuǎn)化為創(chuàng)建CGBitmap的代碼墩划。