{"id":2798,"url":"https://github.com/Goles/GGTabBar","last_synced_at":"2025-08-03T12:31:11.453Z","repository":{"id":56912021,"uuid":"20609946","full_name":"Goles/GGTabBar","owner":"Goles","description":"Another UITabBar \u0026 UITabBarController (iOS Tab Bar) replacement, but uses Auto Layout for arranging it's views hierarchy.","archived":false,"fork":false,"pushed_at":"2020-07-05T01:08:42.000Z","size":113,"stargazers_count":156,"open_issues_count":2,"forks_count":23,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-11-12T04:34:55.672Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Goles.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-06-08T05:17:43.000Z","updated_at":"2024-08-25T21:22:53.000Z","dependencies_parsed_at":"2022-08-21T03:20:25.858Z","dependency_job_id":null,"html_url":"https://github.com/Goles/GGTabBar","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Goles%2FGGTabBar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Goles%2FGGTabBar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Goles%2FGGTabBar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Goles%2FGGTabBar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Goles","download_url":"https://codeload.github.com/Goles/GGTabBar/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228543125,"owners_count":17934428,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-01-05T20:16:23.123Z","updated_at":"2024-12-07T00:30:55.719Z","avatar_url":"https://github.com/Goles.png","language":"Objective-C","funding_links":[],"categories":["UI"],"sub_categories":["Tab Bar","Layout","Other free courses"],"readme":"# GGTabBar\n\nGGTabBar is a *simple* UITabBar \u0026 UITabBarController replacement that uses Auto Layout\nfor constructing the GUI. I created it for curiosity, but it may be useful\nto others who adventure into the land of Auto Layout.\n\n[![Build Status](https://travis-ci.org/Goles/GGTabBar.svg?branch=master)](https://travis-ci.org/Goles/GGTabBar)\n\n![screenshot](screenshot.png)\n\n: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:\n\n### Limitations :bomb:\n\n* Still need to add customization options (`background color`, `tint`, `style`, `background image`, etc.).\n* The tab bar items are UIButtons (no `TabBarItem` abstraction in a `UIView`).\n* No `more` tab if you add more than 5 View Controllers.\n* Still need to add *more* integration tests.\n\n## Install\n\n### CocoaPods\n\n`pod 'GGTabBar', '~\u003e 0.0.2'`\n\n### Xcode\n\nJust copy the `GGTabBar` folder into your Xcode project.\n\n## Usage :rocket:\n\n:warning: Your `UIViewControllers` must set their `tabBarItem` images (selected/normal).\n\n### Objective-C\n\n#### Init and customize\n\n``` objective-c\nGGTabBarController *tabBar = [[GGTabBarController alloc] init];\ntabBar.tabBarAppearanceSettings = @{kTabBarAppearanceHeight : @(100.0)}; // in points\ntabBar.viewControllers = @[vc1, vc2, vc3, vc4];\nself.window.rootViewController = tabBar;\n```\n\n### Swift\n\n:warning: remember to add `GGTabBar.h` into your project's Swift Bridging Header.\n\n``` swift\nvar tabBar: GGTabBarController = GGTabBarController()\ntabBar.tabBarAppearanceSettings = [kTabBarAppearanceHeight : 100.0];\ntabBar.viewControllers = [vc1, vc2, vc3, vc4]\nself.window!.rootViewController = tabBar\n```\n\n:warning: Feel free to explore the provided `Example Project` to check out how to use `GGTabBar`.\n\n## Structure :wine_glass:\n\nAll 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.\n\nIf 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.\n\n![hierarchy](hierarchy.png)\n\n## Debug :bug:\n\nNormally you won't be doing any sort of Debug, but it something strange happens\nyou can enable debugMode so that all the UIView's backgrounds are painted.\n\nTo enable debug mode:\n\n*Objective-C*\n\n``` objective-c\ntabBar.debug = YES;\n```\n\n*Swift*\n\n``` objective-c\ntabBar.debug = true\n```\n\n* Green Views: Margins, there are always exactly two of them.\n* Red Views: Separators, located between buttons.\n* Blue View: The GGTabBar.view.\n* White Views: Button backgrounds.\n\n## Emoji :shit:\n\nYou got to freakin' :heart: them :grin:! \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGoles%2FGGTabBar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FGoles%2FGGTabBar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGoles%2FGGTabBar/lists"}