Convert Figma logo to code with AI

romaonthego logoRESideMenu

iOS 7/8 style side menu with parallax effect.

7,100
1,345
7,100
134

Top Related Projects

An Android library that allows you to easily create applications with slide-in menus. You may use it in your Android apps provided that you cite this project and include the license in your app. Thanks!

The flexible, easy to use, all in one drawer library for your Android project. Now brand new with material 2 design.

Side menu with some categories to choose.

iOS Slide Menu View based on Google+, iQON, Feedly, Ameba iOS app. It is written in pure swift.

Simple side/slide menu control for iOS, no code necessary! Lots of customization. Add it to your project in 5 minutes or less.

The idea of ResideMenu is from Dribbble 1 and 2. It has come true and run in iOS devices. iOS ResideMenu This project is the RefsideMenu Android version. The visual effect is partly referred to iOS version of ResideMenu. And thanks to the authors for the above idea and contribution.

Quick Overview

RESideMenu is an iOS library that provides a customizable side menu interface, similar to those found in popular apps like Facebook and Path. It offers smooth animations, gesture-based interactions, and easy integration into existing iOS projects.

Pros

  • Simple to implement and customize
  • Supports both left and right side menus
  • Smooth animations and gesture-based interactions
  • Compatible with storyboards and XIBs

Cons

  • Not actively maintained (last update was in 2017)
  • Limited documentation and examples
  • May not be fully compatible with the latest iOS versions
  • Lacks some advanced features found in more modern alternatives

Code Examples

  1. Initialize and present the side menu:
RESideMenu *sideMenu = [[RESideMenu alloc] initWithContentViewController:contentViewController
                                                    leftMenuViewController:leftMenuViewController
                                                   rightMenuViewController:rightMenuViewController];
self.window.rootViewController = sideMenu;
  1. Show left or right menu programmatically:
[self.sideMenuViewController presentLeftMenuViewController];
// or
[self.sideMenuViewController presentRightMenuViewController];
  1. Customize appearance:
sideMenu.backgroundImage = [UIImage imageNamed:@"background.jpg"];
sideMenu.menuPreferredStatusBarStyle = UIStatusBarStyleLightContent;
sideMenu.contentViewShadowColor = [UIColor blackColor];
sideMenu.contentViewShadowOffset = CGSizeMake(0, 0);
sideMenu.contentViewShadowOpacity = 0.6;
sideMenu.contentViewShadowRadius = 12;
sideMenu.contentViewShadowEnabled = YES;

Getting Started

  1. Add RESideMenu to your project using CocoaPods:
pod 'RESideMenu', '~> 4.0.7'
  1. Import RESideMenu in your view controller:
#import <RESideMenu/RESideMenu.h>
  1. Create and present the side menu:
UIViewController *contentVC = [self.storyboard instantiateViewControllerWithIdentifier:@"ContentViewController"];
UIViewController *leftMenuVC = [self.storyboard instantiateViewControllerWithIdentifier:@"LeftMenuViewController"];
UIViewController *rightMenuVC = [self.storyboard instantiateViewControllerWithIdentifier:@"RightMenuViewController"];

RESideMenu *sideMenu = [[RESideMenu alloc] initWithContentViewController:contentVC
                                                    leftMenuViewController:leftMenuVC
                                                   rightMenuViewController:rightMenuVC];
self.window.rootViewController = sideMenu;

Competitor Comparisons

An Android library that allows you to easily create applications with slide-in menus. You may use it in your Android apps provided that you cite this project and include the license in your app. Thanks!

Pros of SlidingMenu

  • More customizable with various animation styles and shadow effects
  • Supports both left and right sliding menus
  • Includes a built-in ListView for menu items

Cons of SlidingMenu

  • Less actively maintained (last update in 2016)
  • Slightly more complex implementation due to additional features
  • May require more setup time for basic functionality

Code Comparison

RESideMenu:

RESideMenu *sideMenu = [[RESideMenu alloc] initWithContentViewController:contentViewController
                                                    leftMenuViewController:leftMenuViewController
                                                   rightMenuViewController:rightMenuViewController];
self.window.rootViewController = sideMenu;

SlidingMenu:

SlidingMenu menu = new SlidingMenu(this);
menu.setMode(SlidingMenu.LEFT);
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
menu.setShadowWidthRes(R.dimen.shadow_width);
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);

Both libraries offer similar core functionality for creating side menus in mobile applications. RESideMenu is designed for iOS, while SlidingMenu is for Android. RESideMenu provides a simpler setup process and is more recently maintained. SlidingMenu offers more customization options but may require more initial configuration.

The flexible, easy to use, all in one drawer library for your Android project. Now brand new with material 2 design.

Pros of MaterialDrawer

  • More comprehensive and feature-rich, offering a wide range of customization options
  • Better integration with Material Design principles and components
  • Actively maintained with regular updates and improvements

Cons of MaterialDrawer

  • Steeper learning curve due to its extensive feature set
  • Potentially larger app size and resource consumption
  • May be overkill for simple navigation drawer requirements

Code Comparison

RESideMenu:

RESideMenu *sideMenu = [[RESideMenu alloc] initWithContentViewController:contentViewController
                                                    leftMenuViewController:leftMenuViewController
                                                   rightMenuViewController:rightMenuViewController];
self.window.rootViewController = sideMenu;

MaterialDrawer:

drawer = DrawerBuilder()
    .withActivity(this)
    .withToolbar(toolbar)
    .addDrawerItems(
        PrimaryDrawerItem().withName("Home"),
        SecondaryDrawerItem().withName("Settings")
    )
    .build()

Key Differences

  • RESideMenu is written in Objective-C for iOS, while MaterialDrawer is a Kotlin library for Android
  • MaterialDrawer offers more customization options and follows Material Design guidelines
  • RESideMenu provides a simpler implementation but with fewer features compared to MaterialDrawer

Side menu with some categories to choose.

Pros of Side-Menu.Android

  • More visually appealing with smooth animations and customizable design
  • Actively maintained with recent updates and bug fixes
  • Supports both left and right side menus

Cons of Side-Menu.Android

  • Limited to Android platform, while RESideMenu supports iOS
  • Slightly more complex implementation compared to RESideMenu
  • Fewer customization options for menu behavior

Code Comparison

Side-Menu.Android:

ResideMenu resideMenu = new ResideMenu(this);
resideMenu.setBackground(R.drawable.menu_background);
resideMenu.attachToActivity(this);
resideMenu.addMenuItem(menuItem, ResideMenu.DIRECTION_LEFT);

RESideMenu:

RESideMenu *sideMenu = [[RESideMenu alloc] initWithContentViewController:contentViewController
                                                    leftMenuViewController:leftMenuViewController
                                                   rightMenuViewController:rightMenuViewController];
self.window.rootViewController = sideMenu;

Both libraries offer simple implementation, but Side-Menu.Android provides more granular control over menu items and appearance. RESideMenu's implementation is more straightforward, especially for setting up the initial menu structure.

iOS Slide Menu View based on Google+, iQON, Feedly, Ameba iOS app. It is written in pure swift.

Pros of SlideMenuControllerSwift

  • Written in Swift, providing better performance and safety features
  • Supports both left and right side menus
  • Customizable animation and gesture options

Cons of SlideMenuControllerSwift

  • Less mature and potentially less stable than RESideMenu
  • Fewer customization options for menu appearance
  • Limited documentation compared to RESideMenu

Code Comparison

SlideMenuControllerSwift:

let slideMenuController = SlideMenuController(mainViewController: mainViewController, leftMenuViewController: leftMenuViewController, rightMenuViewController: rightMenuViewController)
self.window?.rootViewController = slideMenuController
self.window?.makeKeyAndVisible()

RESideMenu:

RESideMenu *sideMenuViewController = [[RESideMenu alloc] initWithContentViewController:contentViewController
                                                                leftMenuViewController:leftMenuViewController
                                                               rightMenuViewController:rightMenuViewController];
self.window.rootViewController = sideMenuViewController;
[self.window makeKeyAndVisible];

Both libraries offer similar functionality for implementing side menus in iOS applications. SlideMenuControllerSwift is written in Swift, which may be preferable for modern iOS development, while RESideMenu is implemented in Objective-C. SlideMenuControllerSwift provides more flexibility with animation and gesture options, but RESideMenu has a larger user base and more extensive documentation. The code snippets show that both libraries have similar initialization processes, with SlideMenuControllerSwift using Swift syntax and RESideMenu using Objective-C syntax.

Simple side/slide menu control for iOS, no code necessary! Lots of customization. Add it to your project in 5 minutes or less.

Pros of SideMenu

  • Written in Swift, providing better performance and native iOS integration
  • More customizable with various transition styles and menu types
  • Actively maintained with regular updates and bug fixes

Cons of SideMenu

  • Steeper learning curve due to more configuration options
  • May require more setup code for basic implementations
  • Potentially larger file size due to additional features

Code Comparison

RESideMenu:

RESideMenu *sideMenu = [[RESideMenu alloc] initWithContentViewController:contentViewController
                                                    leftMenuViewController:leftMenuViewController
                                                   rightMenuViewController:rightMenuViewController];
self.window.rootViewController = sideMenu;

SideMenu:

let menu = SideMenuNavigationController(rootViewController: YourMenuViewController())
menu.leftSide = true
SideMenuManager.default.leftMenuNavigationController = menu
SideMenuManager.default.addPanGestureToPresent(toView: self.navigationController!.navigationBar)

Summary

SideMenu offers more modern Swift-based implementation with extensive customization options, making it suitable for complex projects. RESideMenu, while simpler to set up, is written in Objective-C and has fewer features. SideMenu is actively maintained, whereas RESideMenu hasn't been updated in years. Choose SideMenu for ongoing support and advanced functionality, or RESideMenu for quick, basic implementations in Objective-C projects.

The idea of ResideMenu is from Dribbble 1 and 2. It has come true and run in iOS devices. iOS ResideMenu This project is the RefsideMenu Android version. The visual effect is partly referred to iOS version of ResideMenu. And thanks to the authors for the above idea and contribution.

Pros of AndroidResideMenu

  • Native Android implementation, potentially better performance on Android devices
  • Supports both left and right side menus out of the box
  • Includes additional customization options like shadow effects and scaling

Cons of AndroidResideMenu

  • Limited to Android platform, not suitable for cross-platform development
  • Less actively maintained, with fewer recent updates and contributions
  • Smaller community and fewer resources available for support

Code Comparison

RESideMenu (Objective-C):

RESideMenu *sideMenu = [[RESideMenu alloc] initWithContentViewController:contentViewController
                                                    leftMenuViewController:leftMenuViewController
                                                   rightMenuViewController:rightMenuViewController];
self.window.rootViewController = sideMenu;

AndroidResideMenu (Java):

ResideMenu resideMenu = new ResideMenu(this);
resideMenu.setBackground(R.drawable.menu_background);
resideMenu.attachToActivity(this);
resideMenu.setMenuItems(menuItems);

Both libraries offer simple setup, but AndroidResideMenu provides more Android-specific customization options, while RESideMenu focuses on iOS-style implementation with potential for cross-platform use.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

RESideMenu

iOS 7/8 style side menu with parallax effect inspired by Dribbble shots (first and second).

Since version 4.0 you can add menu view controllers on both left and right sides of your content view controller.

RESideMenu Screenshot RESideMenu Screenshot

Requirements

  • Xcode 6 or higher
  • Apple LLVM compiler
  • iOS 6.0 or higher
  • ARC

Demo

Build and run the RESideMenuExample project in Xcode to see RESideMenu in action. For storyboards integration demo, build and run RESideMenuStoryboardsExample.

Installation

CocoaPods

The recommended approach for installating RESideMenu is via the CocoaPods package manager, as it provides flexible dependency management and dead simple installation. For best results, it is recommended that you install via CocoaPods >= 0.28.0 using Git >= 1.8.0 installed via Homebrew.

Install CocoaPods if not already available:

$ [sudo] gem install cocoapods
$ pod setup

Change to the directory of your Xcode project:

$ cd /path/to/MyProject
$ touch Podfile
$ edit Podfile

Edit your Podfile and add RESideMenu:

platform :ios, '6.0'
pod 'RESideMenu', '~> 4.0.7'

Install into your Xcode project:

$ pod install

Open your project in Xcode from the .xcworkspace file (not the usual project file)

$ open MyProject.xcworkspace

Please note that if your installation fails, it may be because you are installing with a version of Git lower than CocoaPods is expecting. Please ensure that you are running Git >= 1.8.0 by executing git --version. You can get a full picture of the installation details by executing pod install --verbose.

Manual Install

All you need to do is drop RESideMenu files into your project, and add #include "RESideMenu.h" to the top of classes that will use it.

Example Usage

In your AppDelegate's - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions create the view controller and assign content and menu view controllers.

// Create content and menu controllers
//
DEMONavigationController *navigationController = [[DEMONavigationController alloc] initWithRootViewController:[[DEMOHomeViewController alloc] init]];
DEMOLeftMenuViewController *leftMenuViewController = [[DEMOLeftMenuViewController alloc] init];
DEMORightMenuViewController *rightMenuViewController = [[DEMORightMenuViewController alloc] init];

// Create side menu controller
//
RESideMenu *sideMenuViewController = [[RESideMenu alloc] initWithContentViewController:navigationController
                                                                leftMenuViewController:leftMenuViewController
                                                               rightMenuViewController:rightMenuViewController];
sideMenuViewController.backgroundImage = [UIImage imageNamed:@"Stars"];

// Make it a root controller
//
self.window.rootViewController = sideMenuViewController;

Present the menu view controller:

[self.sideMenuViewController presentLeftMenuViewController];

or

[self.sideMenuViewController presentRightMenuViewController];

Switch content view controllers:

#import <RESideMenu/RESideMenu.h>

....

[self.sideMenuViewController setContentViewController:viewController animated:YES];
[self.sideMenuViewController hideMenuViewController];

Storyboards Example

  1. Create a subclass of RESideMenu. In this example we call it DEMORootViewController.
  2. In the Storyboard designate the root view's owner as DEMORootViewController.
  3. Make sure to #import "RESideMenu.h" in DEMORootViewController.h.
  4. Add more view controllers to your Storyboard, and give them identifiers "leftMenuViewController", "rightMenuViewController" and "contentViewController". Note that in the new XCode the identifier is called "Storyboard ID" and can be found in the Identity inspector.
  5. Add a method awakeFromNib to DEMORootViewController.m with the following code:
- (void)awakeFromNib
{
    self.contentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"contentViewController"];
    self.leftMenuViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"leftMenuViewController"];
    self.rightMenuViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"rightMenuViewController"];
}

Customization

You can customize the following properties of RESideMenu:

@property (assign, readwrite, nonatomic) NSTimeInterval animationDuration;
@property (strong, readwrite, nonatomic) UIImage *backgroundImage;
@property (assign, readwrite, nonatomic) BOOL panGestureEnabled;
@property (assign, readwrite, nonatomic) BOOL panFromEdge;
@property (assign, readwrite, nonatomic) NSUInteger panMinimumOpenThreshold;
@property (assign, readwrite, nonatomic) BOOL interactivePopGestureRecognizerEnabled;
@property (assign, readwrite, nonatomic) BOOL scaleContentView;
@property (assign, readwrite, nonatomic) BOOL scaleBackgroundImageView;
@property (assign, readwrite, nonatomic) BOOL scaleMenuView;
@property (assign, readwrite, nonatomic) BOOL contentViewShadowEnabled;
@property (assign, readwrite, nonatomic) UIColor *contentViewShadowColor;
@property (assign, readwrite, nonatomic) CGSize contentViewShadowOffset;
@property (assign, readwrite, nonatomic) CGFloat contentViewShadowOpacity;
@property (assign, readwrite, nonatomic) CGFloat contentViewShadowRadius;
@property (assign, readwrite, nonatomic) CGFloat contentViewScaleValue;
@property (assign, readwrite, nonatomic) CGFloat contentViewInLandscapeOffsetCenterX;
@property (assign, readwrite, nonatomic) CGFloat contentViewInPortraitOffsetCenterX;
@property (assign, readwrite, nonatomic) CGFloat parallaxMenuMinimumRelativeValue;
@property (assign, readwrite, nonatomic) CGFloat parallaxMenuMaximumRelativeValue;
@property (assign, readwrite, nonatomic) CGFloat parallaxContentMinimumRelativeValue;
@property (assign, readwrite, nonatomic) CGFloat parallaxContentMaximumRelativeValue;
@property (assign, readwrite, nonatomic) CGAffineTransform menuViewControllerTransformation;
@property (assign, readwrite, nonatomic) BOOL parallaxEnabled;
@property (assign, readwrite, nonatomic) BOOL bouncesHorizontally;
@property (assign, readwrite, nonatomic) UIStatusBarStyle menuPreferredStatusBarStyle;
@property (assign, readwrite, nonatomic) BOOL menuPrefersStatusBarHidden;

If you set a backgroundImage, don't forget to set the Menu View Controller's background color to clear color.

You can implement RESideMenuDelegate protocol to receive the following messages:

- (void)sideMenu:(RESideMenu *)sideMenu didRecognizePanGesture:(UIPanGestureRecognizer *)recognizer;
- (void)sideMenu:(RESideMenu *)sideMenu willShowMenuViewController:(UIViewController *)menuViewController;
- (void)sideMenu:(RESideMenu *)sideMenu didShowMenuViewController:(UIViewController *)menuViewController;
- (void)sideMenu:(RESideMenu *)sideMenu willHideMenuViewController:(UIViewController *)menuViewController;
- (void)sideMenu:(RESideMenu *)sideMenu didHideMenuViewController:(UIViewController *)menuViewController;

Contact

Roman Efimov

License

RESideMenu is available under the MIT license.

Copyright © 2013 Roman Efimov.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.