Animated side menu with customizable UI

Overview

Side Menu

Platform License

Animated side menu with customizable UI. Made in Yalantis.
Check this project on dribbble.
Check this project on Behance.

Requirements

  • iOS 7+
  • Swift 5
  • Xcode 11

Installation

Using CocoaPods

Simply add the following line to your Podfile:

pod 'YALSideMenu', '~> 2.0.1'

(CocoaPods v1.1 or later is required)

Manual Installation

For application targets that do not support embedded frameworks, such as iOS 7, SideMenu can be integrated by including source files from the SideMenu folder directly, optionally wrapping the top-level types into struct SideMenu to simulate a namespace. Yes, this sucks.

  1. Add SideMenu as a submodule by opening the Terminal, cd-ing into your top-level project directory, and entering the command git submodule add https://github.com/yalantis/Side-Menu.iOS.git
  2. Open the SideMenu folder, and drag SideMenu.xcodeproj into the file navigator of your app project.
  3. In Xcode, navigate to the target configuration window by clicking on the blue project icon, and selecting the application target under the "Targets" heading in the sidebar.
  4. Ensure that the deployment target of SideMenu.framework matches that of the application target.
  5. In the tab bar at the top of that window, open the "Build Phases" panel.
  6. Expand the "Target Dependencies" group, and add SideMenu.framework.
  7. Expand the "Link Binary With Libraries" group, and add SideMenu.framework
  8. Click on the + button at the top left of the panel and select "New Copy Files Phase". Rename this new phase to "Copy Frameworks", set the "Destination" to "Frameworks", and add SideMenu.framework.

Usage

  1. Import SideMenu module

    import SideMenu
  2. Adopt the Menu protocol in your menu view controller, e.g.

    class MyFancyMenuViewController: UIViewController, Menu  {
        @IBOutlet var menuItems = [UIView] ()
    }
  3. Set preferredContentSize in menu view controller to specify the desired menu width

  4. In content view controller store an animator, that will animate our menu.

    import SideMenu
    class ContentViewController: UIViewController  {
        var menuAnimator : MenuTransitionAnimator!
    }
  5. Initialize an animator for presentation with parameters

    menuAnimator = MenuTransitionAnimator(mode: .presentation, shouldPassEventsOutsideMenu: false) { [unowned self] in
        self.dismiss(animated: true, completion: nil)
    }

If you want, for example, to dismiss your menu when a tap outside menu takes place, you should pass false to shouldPassEventsOutsideMenu flag and assign a tappedOutsideHandler.In fact, you are free to do whatever you want when a tap outside menu occurs or, if you want to have access to your content view controller, just pass true and assign tappedOutsideHandler to nil.

It's possible to specify menu position starting from version 2.0.2. To position menu on the left side you should pass .left to position in MenuTransitionAnimator init. To position menu on the right side - pass .right accordingly.

  1. Implement class of UIViewControllerTransitioningDelegate that will return our menuAnimator from method animationControllerForPresentedController and assign it to transitioningDelegate of menu view controller(Don't forget to set .Custom modal presentation style). To dismiss menu you should return MenuTransitionAnimator(mode: .Dismissal) from animationControllerForDismissedController method.

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let menu = segue.destination as! MenuViewController
        menu.transitioningDelegate = self
        menu.modalPresentationStyle = .custom
    }
    
    func animationController(forPresented presented: UIViewController, presenting _: UIViewController,
        source _: UIViewController) -> UIViewControllerAnimatedTransitioning? {
            return menuAnimator
    }
    
    func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        return MenuTransitionAnimator(mode: .dismissal)
    }

Let us know!

We’d be really happy if you sent us links to your projects where you use our component. Just send an email to [email protected] And do let us know if you have any questions or suggestion regarding the animation.

P.S. We’re going to publish more awesomeness wrapped in code and a tutorial on how to make UI for iOS (Android) better than better. Stay tuned!

License

The MIT License (MIT)

Copyright © 2018 Yalantis

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.
Comments
  • in swift 4 .sidemenu animation how to do that..

    in swift 4 .sidemenu animation how to do that..

    Report

    The more information you provide, the faster we can help you.

    ⚠️ Select what you want - a feature request or report a bug. Please remove the section you aren't interested in.

    A feature request

    What do you want to add?

    side menu animation exactly what your showing in your image

    How should it look like?

    Please add images.

    Report a bug

    What did you do?

    Please replace this with what you did.

    What did you expect to happen?

    Please replace this with what you expected to happen.

    What happened instead?

    Please replace this with what happened instead.

    Your Environment

    • Version of the component: insert here
    • Swift version: insert here
    • iOS version: insert here
    • Device: insert here
    • Xcode version: insert here
    • If you use Cocoapods: run pod env | pbcopy and insert here
    • If you use Carthage: run carthage version | pbcopy and insert here

    Project that demonstrates the bug

    Please add a link to a project we can download that reproduces the bug.

    type: enhancement priority: low status: need feedback 
    opened by satish1219 4
  • Enable Scroll

    Enable Scroll

    Hello, How I can enable the scroll for menu? Because in my case the last cell is displayed only half so I want to enable the scroll for that.

    Thank you

    opened by pranavpari 4
  • Cannot invoke initializer for type 'UInt' with an argument list of type '(objc_AssociationPolicy)'

    Cannot invoke initializer for type 'UInt' with an argument list of type '(objc_AssociationPolicy)'

    In MenuSegue.swift screen shot 2015-09-18 at 4 08 56 pm

    func animationControllerForDismissedController(dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? { dispatch_async(dispatch_get_main_queue()) { objc_setAssociatedObject(dismissed, &key, nil, UInt(objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)) }

    opened by sekouperry 4
  • Xcode Error: No such module SideMenu

    Xcode Error: No such module SideMenu

    upon adding 'import SideMenu' in the view controller just after import UIKit (as per instructions) Xcode shows error 'No such module SideMenu'. Grateful for feedback.

    opened by ghost 4
  • Swift 2.3

    Swift 2.3

    Hello,

    First of all, thanks for provide us all this stuff. You save us a lot of hours.

    I am using Swift 2.3 so I have followed steps in branch 2.3, but when I add throw CocoaPods pod 'YALSideMenu', when I open the app in XCode I get a bunch of errors (arround 30). I don´t know if I´m doing something wrong or what is happening. I would really apreciate if you could help me.

    Thanks in advance!!

    opened by manulete19 3
  • Support Swift 3

    Support Swift 3

    I got this error in my pod project.

    /Library/Developer/Xcode/DerivedData/Test-brtdskyfgtyqulfxwzmaflpehpwc/Build/Products/Debug-iphonesimulator/YALSideMenu/SideMenu.framework/SideMenu compiled with older version of Swift language (2.0) than previous files (3.0) for architecture x86_64

    Can you create new version for swift 3? Or you already created it?

    Thanks for creating such a great library.

    type: enhancement 
    opened by git-hwa 3
  • No such module

    No such module "SideMenu"

    Hi , I am new in swift, i tried to use your Side-Menu.IOS, i follow all the steps but when i import SideMenu, it show me error- "No Such Module SideMenu". I am using ios 9 and Xcode 7.2. I tried to set Framework Search Path , but its not work because the framework show different path when i see its path in inspector. It show me path -"/Users/element45/Library/Developer/Xcode/DerivedData/sideMenuExample-frlseoygwmkbgyavakwulipeqlda/Build/Products/Debug-iphoneos/SideMenu.framework". when i check on terminal i don't get the folder Debug-iphoneos.

    opened by swatirahane17 3
  • Is it possible for Xcode 9.3 with swift 4

    Is it possible for Xcode 9.3 with swift 4

    Report

    The more information you provide, the faster we can help you.

    ⚠️ Select what you want - a feature request or report a bug. Please remove the section you aren't interested in.

    A feature request

    What do you want to add?

    Please describe what you want to add to the component.

    How should it look like?

    Please add images.

    Report a bug

    What did you do?

    Please replace this with what you did.

    What did you expect to happen?

    Please replace this with what you expected to happen.

    What happened instead?

    Please replace this with what happened instead.

    Your Environment

    • Version of the component: insert here
    • Swift version: insert here
    • iOS version: insert here
    • Device: insert here
    • Xcode version: insert here
    • If you use Cocoapods: run pod env | pbcopy and insert here
    • If you use Carthage: run carthage version | pbcopy and insert here

    Project that demonstrates the bug

    Please add a link to a project we can download that reproduces the bug.

    opened by pinkySri 2
  • SideMenu is not presented in iOS 9.3, X-Code - 9

    SideMenu is not presented in iOS 9.3, X-Code - 9

    Report

    The more information you provide, the faster we can help you.

    ⚠️ Select what you want - a feature request or report a bug. Please remove the section you aren't interested in.

    A feature request

    What do you want to add?

    Please describe what you want to add to the component.

    How should it look like?

    Please add images.

    Report a bug

    What did you do?

    Please replace this with what you did.

    What did you expect to happen?

    Please replace this with what you expected to happen.

    What happened instead?

    Please replace this with what happened instead.

    Your Environment

    • Version of the component: insert here
    • Swift version: insert here swift 3.0
    • iOS version: insert here 9.3
    • Device: insert here Simulator
    • Xcode version: insert here 9.0
    • If you use Cocoapods: run pod env | pbcopy and insert here cocoa pods
    • If you use Carthage: run carthage version | pbcopy and insert here

    Project that demonstrates the bug

    MenuAnimationSuccess.zip

    Please add a link to a project we can download that reproduces the bug.

    opened by panduranga2016 2
  • Forces override on UIViewControllerAnimatedTransitioning methods then crashes

    Forces override on UIViewControllerAnimatedTransitioning methods then crashes

    Report

    The more information you provide, the faster we can help you.

    ⚠️ Select what you want - a feature request or report a bug. Please remove the section you aren't interested in.

    Report a bug

    What did you do?

    I tried to make delegate methods as your documentation says, but it forces me to add 'override' to each of the two methods. When I do, it runs but crashes. When I leave out both methods it does the same.

    What did you expect to happen?

    I expected the menu to pop up like in the demo project (which had no errors). I even tried to copy the classes from the demo but they have errors when I add them to my project.

    What happened instead?

    It crashed & has this error: Redundant conformance of 'ViewController' to protocol 'UIViewControllerTransitioningDelegate'

    Your Environment

    • Version of the component: 2.0 & 2.0.1
    • Swift version: 3.0
    • iOS version: 10.3
    • Device: iPhone 7 Simulator
    • Xcode version: 8.3.2
    • If you use Cocoapods: run pod env | pbcopy and insert here
    • If you use Carthage: run carthage version | pbcopy and insert here

    Project that demonstrates the bug

    n/a

    status: need feedback 
    opened by manenga 2
  • it can  be used with dynamic ui tableview?

    it can be used with dynamic ui tableview?

    Report

    The more information you provide, the faster we can help you.

    ⚠️ Select what you want - a feature request or report a bug. Please remove the section you aren't interested in.

    A feature request

    What do you want to add?

    Please describe what you want to add to the component.

    How should it look like?

    Please add images.

    Report a bug

    What did you do?

    Please replace this with what you did.

    What did you expect to happen?

    Please replace this with what you expected to happen.

    What happened instead?

    Please replace this with what happened instead.

    Your Environment

    • Version of the component: insert here
    • Swift version: insert here
    • iOS version: insert here
    • Device: insert here
    • Xcode version: insert here
    • If you use Cocoapods: run pod env | pbcopy and insert here
    • If you use Carthage: run carthage version | pbcopy and insert here

    Project that demonstrates the bug

    Please add a link to a project we can download that reproduces the bug.

    type: enhancement priority: medium status: queued 
    opened by cbarbera80 2
  • Report

    Report

    Report

    The more information you provide, the faster we can help you.

    ⚠️ Select what you want - a feature request or report a bug. Please remove the section you aren't interested in.

    A feature request

    What do you want to add?

    Please describe what you want to add to the component.

    How should it look like?

    Please add images.

    Report a bug

    What did you do?

    Please replace this with what you did.

    What did you expect to happen?

    Please replace this with what you expected to happen.

    What happened instead?

    Please replace this with what happened instead.

    Your Environment

    • Version of the component: insert here
    • Swift version: insert here
    • iOS version: insert here
    • Device: insert here
    • Xcode version: insert here
    • If you use Cocoapods: run pod env | pbcopy and insert here
    • If you use Carthage: run carthage version | pbcopy and insert here

    Project that demonstrates the bug

    Please add a link to a project we can download that reproduces the bug.

    opened by Shyaliousbonnie24 1
  • I want to use this library on OC, please advise

    I want to use this library on OC, please advise

    Report

    The more information you provide, the faster we can help you.

    ⚠️ Select what you want - a feature request or report a bug. Please remove the section you aren't interested in.

    A feature request

    What do you want to add?

    Please describe what you want to add to the component.

    How should it look like?

    Please add images.

    Report a bug

    What did you do?

    Please replace this with what you did.

    What did you expect to happen?

    Please replace this with what you expected to happen.

    What happened instead?

    Please replace this with what happened instead.

    Your Environment

    • Version of the component: insert here
    • Swift version: insert here
    • iOS version: insert here
    • Device: insert here
    • Xcode version: insert here
    • If you use Cocoapods: run pod env | pbcopy and insert here
    • If you use Carthage: run carthage version | pbcopy and insert here

    Project that demonstrates the bug

    Please add a link to a project we can download that reproduces the bug.

    status: need feedback 
    opened by dslcoding 1
Releases(2.0.2)
Owner
Yalantis
Knowledge is power and the way to get power is by sharing knowledge. We are open source because this is a smart way to live, work and play.
Yalantis
SwiftySideMenu is a lightweight and easy to use side menu controller to add left menu and center view controllers with scale animation based on Pop framework.

SwiftySideMenu SwiftySideMenu is a lightweight, fully customizable, and easy to use controller to add left menu and center view controllers with scale

Hossam Ghareeb 84 Feb 4, 2022
A simple customizable side menu written in SwiftUI.

NSideMenu Description A simple customizable side menu written in SwiftUI. Give a Star! ⭐ Feel free to request an issue on github if you find bugs or r

null 4 Mar 22, 2022
A simple side menu for iOS written in Swift.

ENSwiftSideMenu A lightweight flyover side menu component for iOS with the UIDynamic's bouncing animation, UIGestures and UIBlurEffect. Allows you to

Evgeny Nazarov 1.8k Sep 5, 2022
iOS Interactive Side Menu written in Swift.

Interactive Side Menu A customizable, interactive, auto expanding and collapsing side menu for iOS written in Swift. Here are some of the ways Interac

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

▤ SideMenu If you like SideMenu, give it a ★ at the top right of this page. SideMenu needs your help! If you're a skilled iOS developer and want to he

Jon Kent 5.4k Sep 22, 2022
iOS 7/8 style side menu with parallax effect.

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 control

Roman Efimov 7.2k Sep 17, 2022
A side menu controller written in Swift for iOS

Description SideMenuController is a custom container view controller written in Swift which will display the main content within a center panel and th

Teo 1.2k Sep 9, 2022
Library provides easy to implement variation of Android (Material Design) Floating Action Button for iOS. You can use it as your app small side menu. 🌶

RHSideButtons ?? Library provides easy to implement variation of Android (Material Design) Floating Action Button for iOS. You can use it as your app

Robert Herdzik 166 May 3, 2022
Beautiful iOS side menu library with parallax effect. Written in Swift

AKSideMenu AKSideMenu is a double side menu library with parallax effect. Example Project See the contained examples to get a sample of how AKSideMenu

Diogo Autilio 281 Aug 25, 2022
Simple side option menu with clean code princibles

SwiftUISideMenu Simple side option menu with clean code princibles.

Mehmet Karanlık 12 May 23, 2022
Animated top menu for UITableView / UICollectionView / UIScrollView written in Swift

Persei Animated top menu for UITableView / UICollectionView / UIScrollView written in Swift! Made in Yalantis. Check this project on Dribbble Check th

Yalantis 3.4k Sep 23, 2022
You can easily add awesome animated context menu to your app.

Context-Menu.iOS You can easily add awesome animated context menu to your app. Made in Check this [project on dribbble] (https://dribbble.com/shots/17

Yalantis 1.8k Sep 13, 2022
A Slide Menu, written in Swift, inspired by Slide Menu Material Design

Swift-Slide-Menu (Material Design Inspired) A Slide Menu, written in Swift 2, inspired by Navigation Drawer on Material Design (inspired by Google Mat

Boisney Philippe 90 Oct 17, 2020
Slide-Menu - A Simple Slide Menu With Swift

Slide Menu!! Весь интерфейс создан через код

Kirill 0 Jan 8, 2022
EasyMenu - SwiftUI Menu but not only button (similar to the native Menu)

EasyMenu SwiftUI Menu but not only button (similar to the native Menu) You can c

null 8 Aug 22, 2022
Swift-sidebar-menu-example - Create amazing sidebar menu with animation using swift

 SWIFT SIDEBAR MENU EXAMPLE In this project I create a awesome side bar menu fo

Paolo Prodossimo Lopes 4 Jul 25, 2022
Hamburger Menu Button - A hamburger menu button with full customization

Hamburger Menu Button A hamburger menu button with full customization. Inspired by VinhLe's idea on the Dribble How to use it You can config the looks

Toan Nguyen 114 Jun 12, 2022
PagingKit provides customizable menu UI. It has more flexible layout and design than the other libraries.

PagingKit provides customizable menu & content UI. It has more flexible layout and design than the other libraries. What's this? There are many librar

Kazuhiro Hayashi 1.3k Sep 14, 2022
A paging view controller with a highly customizable menu ✨

Getting Started | Customization | Installation Features Parchment lets you page between view controllers while showing any type of generic indicator t

Martin Rechsteiner 3k Sep 19, 2022