RMPScrollingMenuBarController
has a scrollable menu bar, and multiple view controllers.
You can switch view controllers, which is managed like a UITabBarController
, by swiping a screen or scrolling the menu.
RMPScrollingMenuBarController is available through CocoaPods.
To install
it, simply add the following line to your Podfile:
pod "RMPScrollingMenuBarController"
To run the example project, clone the repo, and run pod install
from the Example directory first.
Setup is as below:
RMPScrollingMenuBarController* menuController = [[RMPScrollingMenuBarController alloc] init];
menuController.delegate = self;
NSArray* viewControllers = @[vc1, vc2, vc3, vc4, vc5];
[menuController setViewControllers:viewControllers];
UINavigationController* naviController;
naviController = [[UINavigationController alloc] initWithRootViewController:menuController];
Delegate methods are as below:
- (RMPScrollingMenuBarItem*)menuBarController:(RMPScrollingMenuBarController *)menuBarController
menuBarItemAtIndex:(NSInteger)index
{
RMPScrollingMenuBarItem* item = [[RMPScrollingMenuBarItem alloc] init];
item.title = [NSString stringWithFormat:@"Title %02ld", (long)(index+1)];
return item;
}
- (void)menuBarController:(RMPScrollingMenuBarController *)menuBarController
willSelectViewController:(UIViewController *)viewController
{
NSLog(@"will select %@", viewController);
}
- (void)menuBarController:(RMPScrollingMenuBarController *)menuBarController
didSelectViewController:(UIViewController *)viewController
{
NSLog(@"did select %@", viewController);
}
- (void)menuBarController:(RMPScrollingMenuBarController *)menuBarController
didCancelViewController:(UIViewController *)viewController
{
NSLog(@"did cancel %@", viewController);
}
You can customize menu bar, as below:
RMPScrollingMenuBarController* menuController = [[RMPScrollingMenuBarController alloc] init];
// Sets background color.
menuController.view.backgroundColor = [UIColor whiteColor];
// Sets color of indicator line which displayed under menu bar item.
menuController.menuBar.indicatorColor = [UIColor blueColor];
// Hides indicator line which displayed under menu bar item.
menuController.menuBar.showsIndicator = NO;
// Hides Separator line which displayed bottom of menu bar.
menuController.menuBar.showsSeparatorLine = NO;
Also you can customize buttons of menu bar item by implementing delegate methods, as below:
- (RMPScrollingMenuBarItem*)menuBarController:(RMPScrollingMenuBarController *)menuBarController
menuBarItemAtIndex:(NSInteger)index
{
RMPScrollingMenuBarItem* item = [[RMPScrollingMenuBarItem alloc] init];
item.title = titles[index];
// Customize appearance of menu bar item.
UIButton* button = item.button;
[button setTitleColor:[UIColor lightGrayColor]
forState:UIControlStateNormal];
[button setTitleColor:[UIColor grayColor]
forState:UIControlStateDisabled];
[button setTitleColor:[UIColor greenColor]
forState:UIControlStateSelected];
return item;
}
Enables infinite paging mode, as below:
RMPScrollingMenuBarController* menuController = [[RMPScrollingMenuBarController alloc] init];
menuController.menuBar.style = RMPScrollingMenuBarStyleInfinitePaging;
- iOS 7.0 or higher
- Adds infinite paging mode.
- Adds properties for customizing appearance.
- Fixes crash issue.
- Fixes minor issues.
- First release.
If you have feature requests or bug reports, feel free to help out by sending pull requests or by creating new issues.
Yoshihiro Kato, yoshihiro@sputnik-apps.com
Recruit Marketing Partners Co.,Ltd. recruit_mp_oss@ml.cocorou.jp
RMPScrollingMenuBarController is available under the MIT license.