{"id":19688151,"url":"https://github.com/behrad-kzm/bekcurvetabbar","last_synced_at":"2026-04-02T02:12:10.314Z","repository":{"id":164166863,"uuid":"229431089","full_name":"behrad-kzm/BEKCurveTabbar","owner":"behrad-kzm","description":"Full Customizable Tabbar with IBInspectables","archived":false,"fork":false,"pushed_at":"2020-05-23T06:04:05.000Z","size":7341,"stargazers_count":185,"open_issues_count":3,"forks_count":17,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-10-29T23:11:41.635Z","etag":null,"topics":["cocoapods","component","pod","swift","tabbar","ui-components","uitabbar","uitabbarcontroller"],"latest_commit_sha":null,"homepage":null,"language":"Swift","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/behrad-kzm.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,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-12-21T13:27:21.000Z","updated_at":"2025-10-16T08:25:17.000Z","dependencies_parsed_at":"2023-05-28T03:30:19.206Z","dependency_job_id":null,"html_url":"https://github.com/behrad-kzm/BEKCurveTabbar","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/behrad-kzm/BEKCurveTabbar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/behrad-kzm%2FBEKCurveTabbar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/behrad-kzm%2FBEKCurveTabbar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/behrad-kzm%2FBEKCurveTabbar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/behrad-kzm%2FBEKCurveTabbar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/behrad-kzm","download_url":"https://codeload.github.com/behrad-kzm/BEKCurveTabbar/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/behrad-kzm%2FBEKCurveTabbar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31294422,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T01:43:37.129Z","status":"online","status_checked_at":"2026-04-02T02:00:08.535Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cocoapods","component","pod","swift","tabbar","ui-components","uitabbar","uitabbarcontroller"],"created_at":"2024-11-11T18:37:07.421Z","updated_at":"2026-04-02T02:12:10.293Z","avatar_url":"https://github.com/behrad-kzm.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# BEKCurveTabbar\nFull Customizable Tabbar with IBInspectables\n\u003cimg src=\"https://github.com/behrad-kzm/BEKDesing/blob/master/Images/BEKHeader.png\"\u003e\n\n[![CI Status](http://img.shields.io/travis/popwarsweet/JellySlider.svg?style=flat)](https://travis-ci.org/popwarsweet/JellySlider)\n[![License](https://img.shields.io/cocoapods/l/JellySlider.svg?style=flat)](http://cocoapods.org/pods/JellySlider)\n[![Platform](https://img.shields.io/cocoapods/p/JellySlider.svg?style=flat)](http://cocoapods.org/pods/JellySlider)\n\nA fun replacement for UITabbar. The Component uses Bézier paths.\n## Demo\n\u003cimg src=\"https://github.com/behrad-kzm/BEKCurveTabbar/blob/master/Preview.png\" height=\"600\"\u003e\u003cimg src=\"https://github.com/behrad-kzm/BEKCurveTabbar/blob/master/Preview2.png\" height=\"600\"\u003e\u003cimg src=\"https://github.com/behrad-kzm/BEKCurveTabbar/blob/master/Preview3.gif\" height=\"600\"\u003e\n\n## Example\n\n__usage:__\n\nYou can change the appearance by using Xcode Interface Builder or by using the default config (recommended).\n```BEKCurveTabbarController``` can be setup with your custom ViewModel that conforms to the ```BEKTabBarViewModelType``` protocol.\nyou can set your 'tabbar' to BEKCurveTabbar inside Interface Builder or initiate it programatically in the easiest way possible like this:\n\n__Note:__ ```BEKCurveTabbarController``` initiates with ```.initiate()```\n\n\n__Default Config Usage:__\n\n```swift\n        //Initiate your viewControllers\n        let firstViewController = UIViewController()\n        firstViewController.view.backgroundColor = .red\n        firstViewController.tabBarItem = UITabBarItem(tabBarSystemItem: .search, tag: 0)\n        let secondViewController = UIViewController()\n        firstViewController.view.backgroundColor = .white\n        secondViewController.tabBarItem = UITabBarItem(tabBarSystemItem: .favorites, tag: 1)\n        let thirdViewController = UIViewController()\n        thirdViewController.view.backgroundColor = .blue\n        thirdViewController.tabBarItem = UITabBarItem(tabBarSystemItem: .more, tag: 2)\n        \n        //get instance of BEKCurveTabbarController\n        let tabBarViewController = BEKCurveTabbarController.instantiate()\n        \n        //set viewControllers to the tabbar\n        tabBarViewController.setViewControllers([firstViewController, secondViewController, thirdViewController], animated: true)\n\n```\n\n\n\n__Customized Config Usage:__\n\nCreate a new struct that conforms to ```BEKTabBarViewModelType``` :\n\n```swift\nstruct MyCustomTabBarViewModel: BEKTabBarViewModelType {\n    let heightRatio: CGFloat = CGFloat(TabbarHeightRatios.bestSize.rawValue)\n    let containerColor: UIColor = .white\n    let hideTitle: Bool = false\n    let animationDuration: CGFloat = 0.3\n    let animated: Bool = true\n    let shadowColor: UIColor = UIColor(red: 0.353, green: 0.784, blue: 1, alpha: 1.0)\n    let shadowRadius: CGFloat = 16\n    let containerBorderWidth: CGFloat = 1.0\n    let containerBorderColor: UIColor = .gray\n    let selectedTextColor: UIColor = .yellow\n    let selectedTextFont: UIFont = .systemFont(ofSize: 13)\n    let normalTextColor: UIColor = .lightGray\n    let normalTextFont: UIFont = .systemFont(ofSize: 11)\n    let topCornerRadius: CGFloat = TabbarHeightRatios.bestSize.cornerRadius()\n    let bottomCornerRadius: CGFloat = 0\n    let containerInsets: UIEdgeInsets = TabbarHeightRatios.bestSize.containerInsets()\n    let selectionCircleRadius: CGFloat = TabbarHeightRatios.bestSize.circleRadius()\n    let selectionCircleBorderWidth: CGFloat = 0.0\n    let selectionCircleBorderColor: UIColor = .clear\n    let selectionCircleBackgroundColor: UIColor = UIColor(red: 0.353, green: 0.784, blue: 1, alpha: 1.0)\n    let textOffset: CGFloat = 0\n    init() {}\n}\n\n```\n\n__Note:__ ```TabbarHeightRatios.bestSize``` provides you computed values for different iOS environments. (recommended)\n\nNow you just need to pass your viewModel to ```.setupViewModel(viewModel: BEKTabBarViewModelType)``` function.\n\n```swift\n        //1- Initiate your viewControllers\n        let firstViewController = UIViewController()\n        firstViewController.view.backgroundColor = .red\n        firstViewController.tabBarItem = UITabBarItem(tabBarSystemItem: .search, tag: 0)\n        let secondViewController = UIViewController()\n        firstViewController.view.backgroundColor = .white\n        secondViewController.tabBarItem = UITabBarItem(tabBarSystemItem: .favorites, tag: 1)\n        let thirdViewController = UIViewController()\n        thirdViewController.view.backgroundColor = .blue\n        thirdViewController.tabBarItem = UITabBarItem(tabBarSystemItem: .more, tag: 2)\n        \n        //2- get instance of BEKCurveTabbarController\n        let tabBarViewController = BEKCurveTabbarController.instantiate()\n        \n        //3- Config your own TabBar ViewModel\n        let myViewModel = MyCustomTabBarViewModel()\n        \n        //4- setup TabBar Controller with you viewModel\n        tabBarViewController.setupViewModel(viewModel: myViewModel)\n        \n        //5- set viewControllers to the tabbar\n        tabBarViewController.setViewControllers([firstViewController, secondViewController, thirdViewController], animated: true)\n        return tabBarViewController\n```\n## Installation\n```swift\n\n  pod 'BEKCurveTabbar', :git =\u003e 'https://github.com/behrad-kzm/BEKCurveTabbar.git'\n\n```\n\n\n## Author\nBehrad Kazemi, Behradkzm@gmail.com, bekapps.com\n\u003ca href=\"https://bekapps.com\"\u003e Visit Web Site \u003c/a\u003e\n## License\n\nBEKCurveTabbar is available under the MIT license. See the LICENSE file for more info.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbehrad-kzm%2Fbekcurvetabbar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbehrad-kzm%2Fbekcurvetabbar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbehrad-kzm%2Fbekcurvetabbar/lists"}