Side Menu Custom Control for iOS apps

SSCustomSideMenu

Side Menu Custom Control for iOS apps.

Features

  • Highly customizable
  • Multiple options of animations
  • Dynamic menu size
  • Available through CocoaPods

Requirements

  • iOS 11.0+
  • Xcode 10+

Installation

CocoaPods

  • You can use CocoaPods to install SSCustomSideMenu by adding it to your Podfile:

      use_frameworks!
      pod 'SSCustomSideMenu'
    
  • In the swift file, import SSSideMenu module:

      import UIKit
      import SSCustomSideMenu
    

Manually

  • Download and drop SSCustomSideMenu folder in your project.
  • Congratulations!

Usage example

Create a subclass of SSSideMenuContainerViewController

class SideMenuViewController: SSSideMenuContainerViewController { ... }
  • In the storyboard assign a custom class SideMenuViewController you just created to a viewController. This viewController will be the container for Side menu.

    Create Menu Table

    let menuTable = SSMenuTableView()
    

    Configure Side Menu Options

    let menuCellConfig = SSMenuCellConfig()
    
    menuCellConfig.cellStyle = .defaultStyle
    
    menuCellConfig.leftIconPadding = 20
    menuCellConfig.imageToTitlePadding = 10
    menuCellConfig.imageHeight = 24
    menuCellConfig.imageWidth = 24
    
    menuCellConfig.numberOfOptions = 3
    
    menuCellConfig.selectedColor = .purple
    menuCellConfig.nonSelectedColor = .black
    
    menuCellConfig.images = [UIImage(named: "first"), UIImage(named: "second"), UIImage(named: "third")]
    menuCellConfig.titles = ["First", "Second", "Thrird"]
    
    self.menuTable.config = menuCellConfig
    

    Configure Side Menu

    let sideMenuConfig = SSSideMenuConfig()
    sideMenuConfig.animationType = .slideOut // Other options:  .slideIn, .compress(0.8, 20)
    sideMenuConfig.sideMenuPlacement = .left // Other options:  .right
    sideMenuConfig.menuWidth = UIScreen.main.bounds.width * 0.5
    
    let firstViewController = storyboard?.instantiateViewController(withIdentifier: "FirstViewController")
    let secondViewController = storyboard?.instantiateViewController(withIdentifier: "SecondViewController")
    let thirdViewController = storyboard?.instantiateViewController(withIdentifier: "ThirdViewController")
    
    sideMenuConfig.viewControllers = [firstViewController!, secondViewController!, thirdViewController!]
    
    sideMenuConfig.menuTable = menuTable
    
    self.ssMenuConfig = sideMenuConfig
    

    Delegates

    • SSCustomSideMenu provides delegate 'sideMenuDelegate' which lets developers dynamically decide which operations to perform on menu option selection

        sideMenuDelegate = self
      
    • By doing this, you will be asked to confirm to following protocol:

        extension ViewController: SSSideMenuDelegate {
            func shouldOpenViewController(forMenuOption menuOption: Int) -> Bool {
                if menuOption == 1 {
                    // Perform action for custom options (i.e logout)
                    return false
                } else {
                    return true
                }
            }
        }
      

    Open and Close Side Menu

    • SSCustomSideMenu Provides custom side menu button - 'SSMenuButton'.
      You only need to assign SSMenuButton custom class to your UIButton from Interface Builder

    • Manually open or close side menu :

        SSSideMenuControls.openOrCloseSideMenu()
      

Contribute

  • We would love you for the contribution to SSCustomSideMenu, check the LICENSE file for more info.

GitHub