Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kawoou/KWDrawerController
Drawer view controller that easy to use!
https://github.com/kawoou/KWDrawerController
drawer menu storyboard swift transition ui
Last synced: about 4 hours ago
JSON representation
Drawer view controller that easy to use!
- Host: GitHub
- URL: https://github.com/kawoou/KWDrawerController
- Owner: kawoou
- License: mit
- Created: 2014-05-29T07:51:19.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2023-04-18T16:43:49.000Z (over 1 year ago)
- Last Synced: 2024-12-09T16:43:37.399Z (3 days ago)
- Topics: drawer, menu, storyboard, swift, transition, ui
- Language: Swift
- Homepage:
- Size: 33.2 MB
- Stars: 157
- Watchers: 13
- Forks: 32
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
KWDrawerController
==================[![Pod Version](http://img.shields.io/cocoapods/v/KWDrawerController.svg?style=flat)](http://cocoadocs.org/docsets/KWDrawerController)
[![Pod Platform](http://img.shields.io/cocoapods/p/KWDrawerController.svg?style=flat)](http://cocoadocs.org/docsets/KWDrawerController)
[![Pod License](http://img.shields.io/cocoapods/l/KWDrawerController.svg?style=flat)](https://github.com/kawoou/KWDrawerController/blob/master/LICENSE)
![Swift](https://img.shields.io/badge/Swift-4.2-orange.svg)Drawer view controller that is easy to use!
Installation
------------### CocoaPods (iOS 8+ projects)
KWDrawerController is available on [CocoaPods](https://github.com/cocoapods/cocoapods). Add the following to your Podfile:
```ruby
# Swift 3
pod 'KWDrawerController', '~> 3.7'# Swift 4~
pod 'KWDrawerController', '~> 4.2'
pod 'KWDrawerController/RxSwift' # with RxSwift extension
```### Manually
Simply drag and drop the `DrawerController` folder into your existing project.
Usage
-----### Code
```swift
import UIKitimport KWDrawerController
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let mainViewController = MainViewController()
let leftViewController = LeftViewController()
let rightViewController = RightViewController()
let drawerController = DrawerController()drawerController.setViewController(mainViewController, .none)
drawerController.setViewController(leftViewController, .left)
drawerController.setViewController(rightViewController, .right)/// Customizing
window = UIWindow(frame: UIScreen.mainScreen().bounds)
window?.rootViewController = drawerController
window?.makeKeyAndVisible()return true
}
}
```### Storyboard
![Storyboard](https://github.com/kawoou/KWDrawerController/raw/preview/Preview/storyboard.jpg)
1. Set `DrawerController` as the Custom Class of the Initial ViewController.
2. Connect the `DrawerEmbedLeftControllerSegue` and/or the `DrawerEmbedRightControllerSegue` from `DrawerController` to your left/right controllers.
3. Connect the `DrawerEmbedMainControllerSegue` from `DrawerController` to your main controller.
4. Set the segue identifiers of both the inspector of `DrawerController` and the segues themselves.
### Open / Close
```swift
/// Open
self.drawerController?.openSide(.left)
self.drawerController?.openSide(.right)/// Close
self.drawerController?.closeSide()
```### Delegate
```swift
optional func drawerDidAnimation(
drawerController: DrawerController,
side: DrawerSide,
percentage: Float
)optional func drawerDidBeganAnimation(
drawerController: DrawerController,
side: DrawerSide
)optional func drawerWillFinishAnimation(
drawerController: DrawerController,
side: DrawerSide
)optional func drawerWillCancelAnimation(
drawerController: DrawerController,
side: DrawerSide
)optional func drawerDidFinishAnimation(
drawerController: DrawerController,
side: DrawerSide
)optional func drawerDidCancelAnimation(
drawerController: DrawerController,
side: DrawerSide
)
```Customizing
-----------### Transition
`DrawerTransition` is a module that determines the rendering direction to move the Drawer. It is implemented by inheriting `DrawerTransition`.
- DrawerSlideTransition
![DrawerSlideTransition](https://github.com/kawoou/KWDrawerController/raw/preview/Preview/slide.gif)
- DrawerScaleTransition
- Use is not recommended.
- DrawerParallaxTransition![DrawerParallaxTransition](https://github.com/kawoou/KWDrawerController/raw/preview/Preview/parallax.gif)
- DrawerFloatTransition
- When using the `Transition`, `Overflow Transition` should also use `DrawerFloatTransition`.![DrawerFloatTransition](https://github.com/kawoou/KWDrawerController/raw/preview/Preview/float.gif)
- DrawerFoldTransition
![DrawerFoldTransition](https://github.com/kawoou/KWDrawerController/raw/preview/Preview/fold.gif)
- DrawerSwingTransition
![DrawerSwingTransition](https://github.com/kawoou/KWDrawerController/raw/preview/Preview/swing.gif)
- DrawerZoomTransition
![DrawerZoomTransition](https://github.com/kawoou/KWDrawerController/raw/preview/Preview/zoom.gif)
### Overflow Transition
`Overflow Transition` be used when `Transition` beyond the open range of the drawer.
- DrawerSlideTransition
- DrawerScaleTransition
- This is natural when used with `DrawerSlideTransition`, `DrwaerParallaxTransition`, `DrawerFoldTransition`, and `DrawerSwingTransition`.![DrawerScaleTransition](https://github.com/kawoou/KWDrawerController/raw/preview/Preview/scale.gif)
- DrawerParallaxTransition
- DrawerFloatTransition
- When using the `Overflow Transition`, `Transition` should also use `DrawerFloatTransition`.
- DrawerFoldTransition
- Use is not recommended.
- DrawerSwingTransition
- Use is not recommended.
- DrawerZoomTransition### Animator
Animator is a module that controls the speed of moving a drawer. It is implemented by inheriting `DrawerAnimator` or `DrawerTickAnimator`.
- DrawerLinearAnimator
- DrawerCurveEaseAnimator
- DrawerSpringAnimator
- DrawerCubicEaseAnimator
- DrawerQuadEaseAnimator
- DrawerQuartEaseAnimator
- DrawerQuintEaseAnimator
- DrawerCircEaseAnimator
- DrawerExpoEaseAnimator
- DrawerSineEaseAnimator
- DrawerElasticEaseAnimator
- DrawerBackEaseAnimator
- DrawerBounceEaseAnimator### Options
```swift
public var isTapToClose: Bool
public var isGesture: Bool
public var isAnimation: Bool
public var isOverflowAnimation: Bool
public var isShadow: Bool
public var isFadeScreen: Bool
public var isBlur: Bool
public var isEnable: Bool
```Changelog
---------+ 1.0 First Release.
+ 1.1 Bug Fix, Add animations.
+ 2.0 Refactoring.
+ 2.1 Bug Fix, Update animation.
+ 2.2 Fix animation, and some bugs.
+ 3.0 Written in Swift 3.0
+ 3.1 Fix Access Control issues on DrawerController.
+ 3.2 Fix Access Control issues on Transition.
+ 3.3 Fix Access Control issues on initializer.
+ 3.4 Remove debug log.
+ 3.5 Fixed bug where touch ignores is not applied for "Absolute Controller".
+ 3.6 Fixed an occurs issue while the drawer was open and layout changing.
+ 3.6.1 Fixed layout issue when rotate device.
+ 3.7 Fixed not updating issues on properties.
+ 4.0 Support Swift 4.
+ 4.1 Implement new flag that enables direction auto-switching.
+ 4.1.1 Support RxSwift(If you want).
+ 4.1.2
- Fix issues on auto layout of child view controllers.
- Replace naming.
- Implement `getViewController` method.
- Reduce cloning size.
+ 4.1.3
- Fix crashed on load. (#12)
+ 4.1.4
- Add state methods to delegate. (#16)
- Fix access control issues. (#18)
- Fixed DrawerFloatTransition bug. (#20)
- DrawerController incorrectly manages lifecycles of child controllers. (#21 #22)
+ 4.1.5
- Code and performance improvements and bug fixes. (#24 @rivera-ernesto)
+ 4.1.6
- Fix transition bugs.
- Fix gesture not working bugs.
- Fix right drawer placement on iPads (#28 @rivera-ernesto)
+ 4.2
- Support swift 4.2. (#31)⚠️ Requirements
--------------- iOS 8.0+
- Swift 3.0+🔑 License
----------KWDrawerController is under MIT license. See the LICENSE file for more info.