Sidebar controller with customizable animations, implemented using a state machine.
You must instantiate the controller with the menu, and the currently active view controller:
[[MSSidebarController alloc] initWithMenuViewController:menuVC
activeViewController:activeVC
animatorFactory:animatorFactory];
You must also implement all three animation protocols:
@protocol MSSidebarDisplayViewControllerAnimator <NSObject>
- (void)sidebarController:(MSSidebarController *)sidebarController
willDisplayViewController:(UIViewController *)newViewController
completionBlock:(void (^)(void))completionBlock;
@end
@protocol MSSidebarDisplayMenuAnimator <NSObject>
- (void)sidebarController:(MSSidebarController *)sidebarController
willDismissViewController:(UIViewController *)currentViewController
andDisplayMenu:(UIViewController *)menuController
completionBlock:(void (^)(void))completionBlock;
@end
@protocol MSSidebarHideViewControllerAnimator <NSObject>
- (void)sidebarController:(MSSidebarController *)sidebarController
willHideViewController:(UIViewController *)currentViewController
toShowNewViewController:(UIViewController *)newViewController
completionBlock:(void (^)(void))completionBlock;
@end
View controllers inside of MSSidebarController
will have a sidebarController property set,
which you can use to change the state of the controller. Example:
[self.sidebarController showMenu];
[self.sidebarController restoreLastViewController];
[self.sidebarController showViewController:SomeOtherController.new];
- Using CocoaPods:
Just add this line to your Podfile
:
pod 'MSSidebarController', '~> 1.0.0'
- Manually:
Simply add the files under Classes to your project.
- Supports iOS iOS7+.
MSSidebarController
is available under the WTFPL license. See the LICENSE file for more info.