{"id":2644,"url":"https://github.com/Kawoou/KWDrawerController","last_synced_at":"2025-08-06T16:31:15.724Z","repository":{"id":17498655,"uuid":"20286430","full_name":"kawoou/KWDrawerController","owner":"kawoou","description":"Drawer view controller that easy to use! ","archived":false,"fork":false,"pushed_at":"2023-04-18T16:43:49.000Z","size":34844,"stargazers_count":157,"open_issues_count":7,"forks_count":32,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-12-01T15:43:00.380Z","etag":null,"topics":["drawer","menu","storyboard","swift","transition","ui"],"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/kawoou.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,"dei":null}},"created_at":"2014-05-29T07:51:19.000Z","updated_at":"2024-06-06T23:38:45.000Z","dependencies_parsed_at":"2024-01-29T18:06:40.053Z","dependency_job_id":null,"html_url":"https://github.com/kawoou/KWDrawerController","commit_stats":{"total_commits":75,"total_committers":5,"mean_commits":15.0,"dds":"0.16000000000000003","last_synced_commit":"9c8e4c9a8f3ec593a1a0c39aa1d82b134d51882d"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kawoou%2FKWDrawerController","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kawoou%2FKWDrawerController/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kawoou%2FKWDrawerController/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kawoou%2FKWDrawerController/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kawoou","download_url":"https://codeload.github.com/kawoou/KWDrawerController/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228923694,"owners_count":17992567,"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":["drawer","menu","storyboard","swift","transition","ui"],"created_at":"2024-01-05T20:16:19.102Z","updated_at":"2024-12-09T16:31:02.770Z","avatar_url":"https://github.com/kawoou.png","language":"Swift","funding_links":[],"categories":["UI","Libs","UI [🔝](#readme)"],"sub_categories":["Menu","UI","Other free courses"],"readme":"KWDrawerController\n==================\n\n[![Pod Version](http://img.shields.io/cocoapods/v/KWDrawerController.svg?style=flat)](http://cocoadocs.org/docsets/KWDrawerController)\n[![Pod Platform](http://img.shields.io/cocoapods/p/KWDrawerController.svg?style=flat)](http://cocoadocs.org/docsets/KWDrawerController)\n[![Pod License](http://img.shields.io/cocoapods/l/KWDrawerController.svg?style=flat)](https://github.com/kawoou/KWDrawerController/blob/master/LICENSE)\n![Swift](https://img.shields.io/badge/Swift-4.2-orange.svg)\n\nDrawer view controller that is easy to use!\n\n\nInstallation\n------------\n\n### CocoaPods (iOS 8+ projects)\n\nKWDrawerController is available on [CocoaPods](https://github.com/cocoapods/cocoapods). Add the following to your Podfile:\n\n```ruby\n# Swift 3\npod 'KWDrawerController', '~\u003e 3.7'\n\n# Swift 4~\npod 'KWDrawerController', '~\u003e 4.2'\npod 'KWDrawerController/RxSwift'        # with RxSwift extension\n```\n\n\n### Manually\n\nSimply drag and drop the `DrawerController` folder into your existing project.\n\n\nUsage\n-----\n\n### Code\n\n```swift\nimport UIKit\n\nimport KWDrawerController\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n\n    var window: UIWindow?\n\n    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -\u003e Bool {\n        \n        let mainViewController   = MainViewController()\n        let leftViewController   = LeftViewController()\n        let rightViewController  = RightViewController()\n        \n        let drawerController     = DrawerController()\n\n        drawerController.setViewController(mainViewController, .none)\n        drawerController.setViewController(leftViewController, .left)\n        drawerController.setViewController(rightViewController, .right)\n\n        /// Customizing\n\n        window = UIWindow(frame: UIScreen.mainScreen().bounds)\n        window?.rootViewController = drawerController\n        window?.makeKeyAndVisible()\n\n        return true\n    }\n}\n```\n\n\n### Storyboard\n\n![Storyboard](https://github.com/kawoou/KWDrawerController/raw/preview/Preview/storyboard.jpg)\n\n 1. Set `DrawerController` as the Custom Class of the Initial ViewController.\n\n 2. Connect the `DrawerEmbedLeftControllerSegue` and/or the `DrawerEmbedRightControllerSegue` from `DrawerController` to your left/right controllers.\n\n 3. Connect the `DrawerEmbedMainControllerSegue` from `DrawerController` to your main controller.\n\n 4. Set the segue identifiers of both the inspector of `DrawerController` and the segues themselves.\n\n\n### Open / Close\n\n```swift\n/// Open\nself.drawerController?.openSide(.left)\nself.drawerController?.openSide(.right)\n\n/// Close\nself.drawerController?.closeSide()\n```\n\n\n### Delegate\n\n```swift\noptional func drawerDidAnimation(\n    drawerController: DrawerController,\n    side: DrawerSide,\n    percentage: Float\n)\n\noptional func drawerDidBeganAnimation(\n    drawerController: DrawerController,\n    side: DrawerSide\n)\n\noptional func drawerWillFinishAnimation(\n    drawerController: DrawerController,\n    side: DrawerSide\n)\n\noptional func drawerWillCancelAnimation(\n    drawerController: DrawerController,\n    side: DrawerSide\n)\n\noptional func drawerDidFinishAnimation(\n    drawerController: DrawerController,\n    side: DrawerSide\n)\n\noptional func drawerDidCancelAnimation(\n    drawerController: DrawerController,\n    side: DrawerSide\n)\n```\n\n\nCustomizing\n-----------\n\n### Transition\n\n`DrawerTransition` is a module that determines the rendering direction to move the Drawer. It is implemented by inheriting `DrawerTransition`.\n\n - DrawerSlideTransition\n\n![DrawerSlideTransition](https://github.com/kawoou/KWDrawerController/raw/preview/Preview/slide.gif)\n\n - DrawerScaleTransition\n\t - Use is not recommended.\n - DrawerParallaxTransition\n\n![DrawerParallaxTransition](https://github.com/kawoou/KWDrawerController/raw/preview/Preview/parallax.gif)\n\n - DrawerFloatTransition\n    - When using the `Transition`, `Overflow Transition` should also use `DrawerFloatTransition`.\n\n![DrawerFloatTransition](https://github.com/kawoou/KWDrawerController/raw/preview/Preview/float.gif)\n\n - DrawerFoldTransition\n\n![DrawerFoldTransition](https://github.com/kawoou/KWDrawerController/raw/preview/Preview/fold.gif)\n\n - DrawerSwingTransition\n\n![DrawerSwingTransition](https://github.com/kawoou/KWDrawerController/raw/preview/Preview/swing.gif)\n\n - DrawerZoomTransition\n\n![DrawerZoomTransition](https://github.com/kawoou/KWDrawerController/raw/preview/Preview/zoom.gif)\n\n\n### Overflow Transition\n\n`Overflow Transition` be used when `Transition` beyond the open range of the drawer.\n\n - DrawerSlideTransition\n - DrawerScaleTransition\n    - This is natural when used with `DrawerSlideTransition`, `DrwaerParallaxTransition`, `DrawerFoldTransition`, and `DrawerSwingTransition`.\n\n![DrawerScaleTransition](https://github.com/kawoou/KWDrawerController/raw/preview/Preview/scale.gif)\n    \n - DrawerParallaxTransition\n - DrawerFloatTransition\n\t - When using the `Overflow Transition`, `Transition` should also use `DrawerFloatTransition`.\n - DrawerFoldTransition\n\t - Use is not recommended.\n - DrawerSwingTransition\n\t - Use is not recommended.\n - DrawerZoomTransition\n\n\n### Animator\n\nAnimator is a module that controls the speed of moving a drawer. It is implemented by inheriting `DrawerAnimator` or `DrawerTickAnimator`.\n\n - DrawerLinearAnimator\n - DrawerCurveEaseAnimator\n - DrawerSpringAnimator\n - DrawerCubicEaseAnimator\n - DrawerQuadEaseAnimator\n - DrawerQuartEaseAnimator\n - DrawerQuintEaseAnimator\n - DrawerCircEaseAnimator\n - DrawerExpoEaseAnimator\n - DrawerSineEaseAnimator\n - DrawerElasticEaseAnimator\n - DrawerBackEaseAnimator\n - DrawerBounceEaseAnimator\n\n\n### Options\n\n```swift\npublic var isTapToClose: Bool\npublic var isGesture: Bool\npublic var isAnimation: Bool\npublic var isOverflowAnimation: Bool\npublic var isShadow: Bool\npublic var isFadeScreen: Bool\npublic var isBlur: Bool\npublic var isEnable: Bool\n```\n\n\nChangelog\n---------\n\n+ 1.0 First Release.\n+ 1.1 Bug Fix, Add animations.\n+ 2.0 Refactoring.\n+ 2.1 Bug Fix, Update animation.\n+ 2.2 Fix animation, and some bugs.\n+ 3.0 Written in Swift 3.0\n+ 3.1 Fix Access Control issues on DrawerController.\n+ 3.2 Fix Access Control issues on Transition.\n+ 3.3 Fix Access Control issues on initializer.\n+ 3.4 Remove debug log.\n+ 3.5 Fixed bug where touch ignores is not applied for \"Absolute Controller\".\n+ 3.6 Fixed an occurs issue while the drawer was open and layout changing.\n+ 3.6.1 Fixed layout issue when rotate device.\n+ 3.7 Fixed not updating issues on properties.\n+ 4.0 Support Swift 4.\n+ 4.1 Implement new flag that enables direction auto-switching.\n+ 4.1.1 Support RxSwift(If you want).\n+ 4.1.2\n  - Fix issues on auto layout of child view controllers.\n  - Replace naming.\n  - Implement `getViewController` method.\n  - Reduce cloning size.\n+ 4.1.3\n  - Fix crashed on load. (#12)\n+ 4.1.4\n  - Add state methods to delegate. (#16)\n  - Fix access control issues. (#18)\n  - Fixed DrawerFloatTransition bug. (#20)\n  - DrawerController incorrectly manages lifecycles of child controllers. (#21 #22)\n+ 4.1.5\n  - Code and performance improvements and bug fixes. (#24 @rivera-ernesto)\n+ 4.1.6\n  - Fix transition bugs.\n  - Fix gesture not working bugs.\n  - Fix right drawer placement on iPads (#28 @rivera-ernesto)\n+ 4.2\n  - Support swift 4.2. (#31)\n\n⚠️ Requirements\n--------------\n\n - iOS 8.0+\n - Swift 3.0+\n\n\n🔑 License\n----------\n\nKWDrawerController is under MIT license. See the LICENSE file for more info.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKawoou%2FKWDrawerController","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FKawoou%2FKWDrawerController","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKawoou%2FKWDrawerController/lists"}