Page Menu - iOS App Source Code

  • Page Menu - iOS App Source Code
  • Page Menu - iOS App Source Code
  •     Description   

  • A paging menu controller built from other view controllers placed inside a scroll view (like Spotify, Windows Phone, Instagram)

    Installation

    Cocoa Pods

    PageMenu is available through CocoaPods. !! Swift only !!

    To install add the following line to your Podfile:

    pod 'PageMenu'
    

    Manual Installation

    The class file required for PageMenu is located in the Classes folder in the root of this repository as listed below:

    • CAPSPageMenu.swift

    How to use PageMenu

    First you will have to create a view controller that is supposed to serve as the base of the page menu. This can be a view controller with its xib file as a separate file as well as having its xib file in storyboard. Following this you will have to go through a few simple steps outlined below in order to get everything up and running.

    1) Add the files listed in the installation section to your project

    2) Add a property for CAPSPageMenu in your base view controller

    Swift

    var pageMenu : CAPSPageMenu?

    Objective-C

    @property (nonatomic) CAPSPageMenu *pagemenu;

    3) Add the following code in the viewDidLoad function in your view controller

    Swift

    // Array to keep track of controllers in page menu
    var controllerArray : [UIViewController] = []
    
    // Create variables for all view controllers you want to put in the 
    // page menu, initialize them, and add each to the controller array. 
    // (Can be any UIViewController subclass)
    // Make sure the title property of all view controllers is set
    // Example:
    var controller : UIViewController = UIViewController(nibName: "controllerNibName", bundle: nil)
    controller.title = "SAMPLE TITLE"
    controllerArray.append(controller)
    
    // Customize page menu to your liking (optional) or use default settings by sending nil for 'options' in the init
    // Example:
    var parameters: [CAPSPageMenuOption] = [
        .MenuItemSeparatorWidth(4.3), 
        .UseMenuLikeSegmentedControl(true), 
        .MenuItemSeparatorPercentageHeight(0.1)
    ]
    
    // Initialize page menu with controller array, frame, and optional parameters
    pageMenu = CAPSPageMenu(viewControllers: controllerArray, frame: CGRectMake(0.0, 0.0, self.view.frame.width, self.view.frame.height), pageMenuOptions: parameters)
    
    // Lastly add page menu as subview of base view controller view
    // or use pageMenu controller in you view hierachy as desired
    self.view.addSubview(pageMenu!.view)

    Objective-C

    // Array to keep track of controllers in page menu
    NSMutableArray *controllerArray = [NSMutableArray array];
    
    // Create variables for all view controllers you want to put in the 
    // page menu, initialize them, and add each to the controller array. 
    // (Can be any UIViewController subclass)
    // Make sure the title property of all view controllers is set
    // Example:
    UIViewController *controller = [UIViewController alloc] initWithNibname:@"controllerNibnName" bundle:nil];
    controller.title = @"SAMPLE TITLE";
    [controllerArray addObject:controller];
    
    // Customize page menu to your liking (optional) or use default settings by sending nil for 'options' in the init
    // Example:
    NSDictionary *parameters = @{CAPSPageMenuOptionMenuItemSeparatorWidth: @(4.3),
                                 CAPSPageMenuOptionUseMenuLikeSegmentedControl: @(YES),
                                 CAPSPageMenuOptionMenuItemSeparatorPercentageHeight: @(0.1)
                                 };
    
    // Initialize page menu with controller array, frame, and optional parameters
    _pageMenu = [[CAPSPageMenu alloc] initWithViewControllers:controllerArray frame:CGRectMake(0.0, 0.0, self.view.frame.size.width, self.view.frame.size.height) options:parameters];
    
    // Lastly add page menu as subview of base view controller view
    // or use pageMenu controller in you view hierachy as desired
    [self.view addSubview:_pageMenu.view];

    4) Optional - Delegate Methods

    In order to use the delegate methods first set the delegate of page menu to the parent view controller when setting it up

    Swift

    // Optional delegate 
    pageMenu!.delegate = self

    Objective-C

    // Optional delegate 
    _pageMenu.delegate = self;

    After that you will be able to set up the following delegate methods inside of your parent view controller

    Swift

    func willMoveToPage(controller: UIViewController, index: Int){}
    
    func didMoveToPage(controller: UIViewController, index: Int){}

    Objective-C

    // Optional delegate 
    - (void)willMoveToPage:(UIViewController *)controller index:(NSInteger)index {}
    
    - (void)didMoveToPage:(UIViewController *)controller index:(NSInteger)index {}

    5) You should now be ready to use PageMenu!!