Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Goles/GGTabBar

Another UITabBar & UITabBarController (iOS Tab Bar) replacement, but uses Auto Layout for arranging it's views hierarchy.
https://github.com/Goles/GGTabBar

Last synced: about 1 month ago
JSON representation

Another UITabBar & UITabBarController (iOS Tab Bar) replacement, but uses Auto Layout for arranging it's views hierarchy.

Awesome Lists containing this project

README

        

# GGTabBar

GGTabBar is a *simple* UITabBar & UITabBarController replacement that uses Auto Layout
for constructing the GUI. I created it for curiosity, but it may be useful
to others who adventure into the land of Auto Layout.

[![Build Status](https://travis-ci.org/Goles/GGTabBar.svg?branch=master)](https://travis-ci.org/Goles/GGTabBar)

![screenshot](screenshot.png)

:warning: This is a work in progress/proof of concept, I'm no expert. Sorry if it's missing some feature you need, feel free to fork, pull request or open issues. I'm available on [Twitter](http://twitter.com/ngoles) if you have further questions :grimacing::ok_hand:

### Limitations :bomb:

* Still need to add customization options (`background color`, `tint`, `style`, `background image`, etc.).
* The tab bar items are UIButtons (no `TabBarItem` abstraction in a `UIView`).
* No `more` tab if you add more than 5 View Controllers.
* Still need to add *more* integration tests.

## Install

### CocoaPods

`pod 'GGTabBar', '~> 0.0.2'`

### Xcode

Just copy the `GGTabBar` folder into your Xcode project.

## Usage :rocket:

:warning: Your `UIViewControllers` must set their `tabBarItem` images (selected/normal).

### Objective-C

#### Init and customize

``` objective-c
GGTabBarController *tabBar = [[GGTabBarController alloc] init];
tabBar.tabBarAppearanceSettings = @{kTabBarAppearanceHeight : @(100.0)}; // in points
tabBar.viewControllers = @[vc1, vc2, vc3, vc4];
self.window.rootViewController = tabBar;
```

### Swift

:warning: remember to add `GGTabBar.h` into your project's Swift Bridging Header.

``` swift
var tabBar: GGTabBarController = GGTabBarController()
tabBar.tabBarAppearanceSettings = [kTabBarAppearanceHeight : 100.0];
tabBar.viewControllers = [vc1, vc2, vc3, vc4]
self.window!.rootViewController = tabBar
```

:warning: Feel free to explore the provided `Example Project` to check out how to use `GGTabBar`.

## Structure :wine_glass:

All the views are setup with Auto Layout. There are no CGRect, Struts or Sprints, so unless you break the constraints, everything should work on different screen-sizes.

If you want more information about how the `AutoLayout Constraints` are specified, please take a look at the tests. It's the best way to understand what's going on here.

![hierarchy](hierarchy.png)

## Debug :bug:

Normally you won't be doing any sort of Debug, but it something strange happens
you can enable debugMode so that all the UIView's backgrounds are painted.

To enable debug mode:

*Objective-C*

``` objective-c
tabBar.debug = YES;
```

*Swift*

``` objective-c
tabBar.debug = true
```

* Green Views: Margins, there are always exactly two of them.
* Red Views: Separators, located between buttons.
* Blue View: The GGTabBar.view.
* White Views: Button backgrounds.

## Emoji :shit:

You got to freakin' :heart: them :grin:!