All Projects → timshim → MightyTabBar

timshim / MightyTabBar

Licence: MIT license
How tab bars should work.

Programming Languages

swift
15916 projects
ruby
36898 projects - #4 most used programming language
objective c
16641 projects - #2 most used programming language

Projects that are alternatives of or similar to MightyTabBar

Estabbarcontroller
ESTabBarController is developed and maintained by Vincent Li. If you have any questions or issues in using ESTabBarController, welcome to issue. If you want to contribute to ESTabBarController, Please submit Pull Request, I will deal with it as soon as possible.
Stars: ✭ 4,649 (+6356.94%)
Mutual labels:  tabbar, tabbarcontroller
react-native-segment-controller
A react-native segment controller(Tab) for both ios and android.
Stars: ✭ 18 (-75%)
Mutual labels:  tabbar, tabbarcontroller
Youtube Ios
youtube iOS app template written in swift 5
Stars: ✭ 2,438 (+3286.11%)
Mutual labels:  tabbar, tabbarcontroller
Foldingtabbar.ios
Folding Tab Bar and Tab Bar Controller
Stars: ✭ 3,677 (+5006.94%)
Mutual labels:  tabbar, tabbarcontroller
Cyltabbarcontroller
[EN]It is an iOS UI module library for adding animation to iOS tabbar items and icons with Lottie, and adding a bigger center UITabBar Item. [CN]【中国特色 TabBar】一行代码实现 Lottie 动画TabBar,支持中间带+号的TabBar样式,自带红点角标,支持动态刷新。【iOS13 & Dark Mode & iPhone XS MAX supported】
Stars: ✭ 6,605 (+9073.61%)
Mutual labels:  tabbar, tabbarcontroller
Rdvtabbarcontroller
Highly customizable tabBar and tabBarController for iOS
Stars: ✭ 2,292 (+3083.33%)
Mutual labels:  tabbar, tabbarcontroller
flutter-bottomAppBar
Watch the tutorial video on Youtube ->
Stars: ✭ 15 (-79.17%)
Mutual labels:  tabbar, tabbarcontroller
Sscustomtabbar
Simple Animated tabbar with native control
Stars: ✭ 251 (+248.61%)
Mutual labels:  tabbar
Tabby
⛩ A fancy tabbar
Stars: ✭ 104 (+44.44%)
Mutual labels:  tabbar
Swiftui Animation
SwiftUI Animation
Stars: ✭ 233 (+223.61%)
Mutual labels:  tabbar
Expandedtabbar
ExpandedTabBar is a very creative designed solution for "more" items in UITabBarController. It's greate experience to have more comfortable and intuitive UI.
Stars: ✭ 219 (+204.17%)
Mutual labels:  tabbar
AHCategoryView
A navigation view for categories
Stars: ✭ 29 (-59.72%)
Mutual labels:  tabbarcontroller
Motion-Tab-Bar
A beautiful animated flutter widget package library. The tab bar will attempt to use your current theme out of the box, however you may want to theme it.
Stars: ✭ 237 (+229.17%)
Mutual labels:  tabbar
Vbrrollingpit
Simple, beautiful and interactive UITabBar
Stars: ✭ 252 (+250%)
Mutual labels:  tabbar
QWTabBarTemplate.xctemplate
自定义模版 快速创建带有导航栏和工具栏的工程
Stars: ✭ 44 (-38.89%)
Mutual labels:  tabbar
PageSegment
左右滑动切换页面,TabBar支持小红点显示。
Stars: ✭ 89 (+23.61%)
Mutual labels:  tabbar
KPSmartTabBar
A fully customisable and flexible tab bar controller
Stars: ✭ 37 (-48.61%)
Mutual labels:  tabbar
react-native-collapsible-segmented-view
A cross-platform Collapsible Segmented View component for React Native
Stars: ✭ 37 (-48.61%)
Mutual labels:  tabbar
XYTabBarAnimation
tabbar点击动画
Stars: ✭ 27 (-62.5%)
Mutual labels:  tabbar
react-native-tabbar
A tabbar component for React Native
Stars: ✭ 59 (-18.06%)
Mutual labels:  tabbar

Build Status CocoaPods Carthage Compatible Swift v4 Contributors MIT License Twitter


Logo

MightyTabBar is a customizable tab bar that doubles as a menu drawer. Instead of being limited to 5 tab bar items, MightyTabBar allows your app to have many more tab bar items, all positioned within the thumb zone and easily accessible via swipe up.

The original tab bar has always been one of the best UI controls for navigation. It's simple, clear and easy to reach on a mobile device. However, one of the main issues with it is the limited space it affords. The current solution uses a 'More...' tab item to reveal a list of additional menu items, often on another screen. Another solution has been the dreaded hamburger menu, of which there have been many, many, many articles written about it.

MightyTabBar is a simple solution to this. It uses a UI element which we are all familliar with (the tab bar) and combines it with another UI element we've probably come across before - the card or drawer UI. Drawers are used in apps like Music, Maps and Uber to display more information about an activity in the main view. Combining the tab bar and drawer allows MightyTabBar to have the best of both worlds - a simple, familliar navigation control which can be expanded to show additional tab bar items.

Some ideas for the future of MightyTabBar:

  • Allow drag and drop to reposition tab bar items
  • Indicators for selected tab bar items below the fold
  • Support UIVisualEffectView for the background
  • Better iPad support
  • Better horizontal layout support
  • Testing! 😅
  • Refactor to use SwiftUI

As always, if you like where this project is going, please feel free to suggest new features, fixes, improvements and maybe even contribute if you can!

Table of Contents

Screenshots

Product Name Screen Shot Product Name Screen Shot

Getting Started

Follow the instructions below to get started.

Requirements

  • Xcode 10 or later
  • iOS 10.0 or later
  • Swift 4 or later

Demo

Run pod install in the MightTabBarExample folder. Open the MightyTabBarExample workspace. Build and run.

Installation

CocoaPods

pod MightyTabBar

Carthage

github "timshim/MightyTabBar"

Manually

git clone https://github.com/timshim/MightyTabBar.git

Usage

Setup

This example initializes MightyTabBar in didFinishLaunching method in AppDelegate:

window = UIWindow(frame: UIScreen.main.bounds)

// Initialize MightyTabBar
let tabBarController = MightyTabBarController()

// MightyTabBar configuration
tabBarController.itemCountInRow = 4 // Number of tab bar items on each row
tabBarController.bgColor = .white // Background color of the tab bar
tabBarController.handleColor = UIColor(displayP3Red: 149/255, green: 165/255, blue: 166/255, alpha: 0.5) // Color of the drag handle
tabBarController.selectedColor = .red // Set highlighted color
tabBarController.deselectedColor = .black // Set normal color

// Add the tab bar items as an array of dictionary with keys "name" and "image"
tabBarController.tabBarItems = [
    ["name": "Home", "image": "home"],
    ["name": "Explore", "image": "rocket"],
    ["name": "Camera", "image": "camera"],
    ["name": "Gift", "image": "gift"],
    ["name": "Settings", "image": "gear"],
    ["name": "Award", "image": "gift"],
    ["name": "Profile", "image": "home"],
    ["name": "Gear", "image": "gear"],
    ["name": "Discover", "image": "rocket"],
    ["name": "Photos", "image": "camera"]
]

// Add the ViewControllers for each item
let vc01 = ViewController01()
let vc02 = ViewController02()
let vc03 = ViewController03()
let vc04 = ViewController04()
let vc05 = ViewController05()
let vc06 = ViewController06()
let vc07 = ViewController07()
let vc08 = ViewController08()
let vc09 = ViewController09()
let vc10 = ViewController10()
tabBarController.viewControllers = [vc01, vc02, vc03, vc04, vc05, vc06, vc07, vc08, vc09, vc10]

window?.rootViewController = tabBarController
window?.makeKeyAndVisible()

Badge

Set a badge count by calling setBadge(count: Int, index: Int). Set count to 0 to remove it.

tabBarController.setBadge(count: 1, index: 0)

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature)
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Tim Shim - @timshim - [email protected]

Acknowledgements

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].