{"id":20819865,"url":"https://github.com/panevnyk/swipevc","last_synced_at":"2025-05-07T15:23:45.797Z","repository":{"id":56922377,"uuid":"116696568","full_name":"Panevnyk/SwipeVC","owner":"Panevnyk","description":"Animated analog to UITabBarController, with cool interactive TabBar","archived":false,"fork":false,"pushed_at":"2020-06-20T10:22:27.000Z","size":26481,"stargazers_count":20,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-18T19:28:59.842Z","etag":null,"topics":["animator","ios","items","swift","swipevc","tabbar","viewcontroller-transition"],"latest_commit_sha":null,"homepage":"","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/Panevnyk.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-08T15:51:41.000Z","updated_at":"2023-12-14T06:39:47.000Z","dependencies_parsed_at":"2022-08-20T22:20:20.590Z","dependency_job_id":null,"html_url":"https://github.com/Panevnyk/SwipeVC","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Panevnyk%2FSwipeVC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Panevnyk%2FSwipeVC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Panevnyk%2FSwipeVC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Panevnyk%2FSwipeVC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Panevnyk","download_url":"https://codeload.github.com/Panevnyk/SwipeVC/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252903444,"owners_count":21822447,"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":["animator","ios","items","swift","swipevc","tabbar","viewcontroller-transition"],"created_at":"2024-11-17T22:07:41.097Z","updated_at":"2025-05-07T15:23:45.778Z","avatar_url":"https://github.com/Panevnyk.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SwipeVC\n\n\u003cp align=\"center\"\u003e  \n\u003cimg src=\"https://github.com/Panevnyk/SwipeVC/blob/master/Images/Bottom_tabBar.gif\" width=\"200\"\u003e\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n\u003cimg src=\"https://github.com/Panevnyk/SwipeVC/blob/master/Images/Top_tabBar.gif\" width=\"200\"\u003e\n\u003c/p\u003e\n\nSwipeVC framework created as a cool animated analog to UITabBarController. SwipeVC gives you the possibility to manage screen not only using TabBar controls but simply sliding left and right.\n\nYou can add SVCTabBar with different animations to manage those screens. Also, you have the possibility to customize TabBar a lot. \nAdjust TabBar to top or bottom. Predefine insets by specific rules. Setup different Animators to image and title of the TabBarItem.\nAlso, you can inject your own custom TabBar, TabBarItem, or specific Animator depends on what level of customization you need.\n\n## CocoaPods\n\nFor SwipeVC, use the following entry in your Podfile:\n\n```rb\npod 'SwipeVC'\n```\n\nThen run `pod install`.\n\nIn any file you'd like to use SwipeVC in, don't forget to\nimport the framework with `import SwipeVC`.\n\n## Usage\n\nFor use SVCSwipeViewController, you can simply extend you ViewController from SVCSwipeViewController. And add view controllers to viewControllers property.\n\n```swift\nfinal class ExampleSwipeViewController: SVCSwipeViewController {\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        addViewControllers()\n    }\n\n    private func addViewControllers() {\n        let storyboard = UIStoryboard(name: \"Main\", bundle: nil)\n        let firstViewController = storyboard.instantiateViewController(withIdentifier: \"FirstViewController\") as! FirstViewController\n        let secondViewController = storyboard.instantiateViewController(withIdentifier: \"SecondViewController\") as! SecondViewController\n        let thirdViewController = storyboard.instantiateViewController(withIdentifier: \"ThirdViewController\") as! ThirdViewController\n        \n        viewControllers = [firstViewController, secondViewController, thirdViewController]\n    }\n}\n```\n\nFor use tabBar, you should inject tabBar property. You can use SVCTabBar or your custom realization.\nYou can set tabBarType property (.top or . bottom) for change tab bar position in SVCSwipeViewController.\nSVCSwipeViewController have contentInsets, tabBarInsets, viewControllersInsets properties for customize some spaces in different way if you needed.\n\n```swift\nfinal class ExampleSwipeViewController: SVCSwipeViewController {\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        tabBarInjection()\n    }\n\n    private func tabBarInjection() {\n        tabBarType = .top\n        \n        let defaultTabBar = SVCTabBar()\n        \n        // Init first item\n        let firstItem = SVCTabItem(type: .system)\n        firstItem.imageViewAnimators = [SVCTransitionAnimator(transitionOptions: .transitionFlipFromTop)]\n        firstItem.setImage(UIImage(named: \"ic_location_menu_normal\")?.withRenderingMode(.alwaysOriginal), for: .normal)\n        firstItem.setImage(UIImage(named: \"ic_location_menu_selected\")?.withRenderingMode(.alwaysOriginal), for: .selected)\n        \n        // Init second item\n        let secondItem = SVCTabItem(type: .system)\n        secondItem.imageViewAnimators = [SVCTransitionAnimator(transitionOptions: .transitionFlipFromRight)]\n        secondItem.setImage(UIImage(named: \"ic_users_menu_normal\")?.withRenderingMode(.alwaysOriginal), for: .normal)\n        secondItem.setImage(UIImage(named: \"ic_users_menu_selected\")?.withRenderingMode(.alwaysOriginal), for: .selected)\n        \n        // Init third item\n        let thirdItem = SVCTabItem(type: .system)\n        thirdItem.imageViewAnimators = [SVCTransitionAnimator(transitionOptions: .transitionFlipFromBottom)]\n        thirdItem.setImage(UIImage(named: \"ic_media_menu_normal\")?.withRenderingMode(.alwaysOriginal), for: .normal)\n        thirdItem.setImage(UIImage(named: \"ic_media_menu_selected\")?.withRenderingMode(.alwaysOriginal), for: .selected)\n        \n        defaultTabBar.items = [firstItem, secondItem, thirdItem]\n        \n        // inject tab bar\n        tabBar = defaultTabBar\n    }\n}\n```\n\n#### Item animations:\n\nYou can use different Animators for SVCTabItem. SwipeVC has SVCBounceAnimator(), SVCRotationAnimator(), SVCImagesAnimator(), SVCTransitionAnimator() ...\n\n```swift\nlet tabBarItem = SVCTabItem(type: .system)\ntabBarItem.imageViewAnimators = [SVCBounceAnimator()]\ntabBarItem.titleLabelAnimators = [SVCTransitionAnimator(transitionOptions: .transitionFlipFromBottom)]\n```\n\nOr create your own Animator simply realized SVCAnimator protocol.\n\n```swift\nopen class SomeCustomAnimator: SVCAnimator {\n    open func select(onView view: UIView) {\n        // Some select animation\n    }\n\n    open func deselect(onView view: UIView) {\n        // Some deselect animation\n    }\n}\n\n// And simple set animator to your item(image or title)\ntabBarItem.imageViewAnimators = [SomeCustomAnimator()]\ntabBarItem.titleViewAnimators = [SomeCustomAnimator()]\n```\n\nFor use movable line view you should set \"defaultTabBar.movableView.isHidden = false\".\nYou can customize your  movableView (width, height, bouncing, attach).\n\n```swift\nfunc tabBarInjection() {\n    let defaultTabBar = SVCTabBar()\n    showMovableView(onDefaultTabBar: defaultTabBar)\n\n    // Add some items ...\n\n    // inject tab bar\n    tabBar = defaultTabBar\n}\n\nfunc showMovableView(onDefaultTabBar defaultTabBar: SVCTabBar) {\n    defaultTabBar.movableView.isHidden = false\n    defaultTabBar.movableView.backgroundColor = ExampleSwipeViewController.defaultStyleColor\n    defaultTabBar.movableView.bouncing = 0.5\n    defaultTabBar.movableView.width = 64\n    defaultTabBar.movableView.height = 1\n    defaultTabBar.movableView.attach = .bottom\n}\n```\n\n## Example target\n\nYou can check more functionality of SwipeVC in [Example](Example) target.\n\n## License\n\nSwipeVC is released under an MIT license. See [License.txt](License.txt) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanevnyk%2Fswipevc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpanevnyk%2Fswipevc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanevnyk%2Fswipevc/lists"}