An iOS Drop Down Menu. It's very similar to menus for desktop applications. Screenshot:
To integrate CYDropDownMenu into your Xcode project using CocoaPods, specify it in your Podfile:
platform :ios, '8.0' use_frameworks! target 'YourProjectName' do pod 'CYDropDownMenu', '~> 1.0.2' endFor Swfit, remember to import CYDropDownMenu module before using it.
Copy the source code in the /CYDropDownMenu folder into your project.
Just use it like UIView. You could quickly find out how to use it with more details in the Demo project.
Create the CYDropDownMenu and set data:
CGFloat navigationBarHeight = ([UIApplication sharedApplication].statusBarFrame.size.height + (self.navigationController.navigationBar.frame.size.height ?: 0.0)); CYDropDownMenu *dropDownMenu = [[CYDropDownMenu alloc] initWithFrame:CGRectMake(0, navigationBarHeight, self.view.frame.size.width, 45)]; dropDownMenu.sectionTitles = @[@"Category", @"Price", @"Distance", @"Order", @"More"]; dropDownMenu.sectionsItems = @[@[@"All",@"Food", @"Hotel", @"Bank", @"Cinema", @"Entertainment"], @[@"$0", @"$1-$100", @"$101-$1000", @">$1000"], @[@"0-10km", @"11-100km", @"101-1000km", @">1000km"], @[@"Recommended", @"Near to me", @"The highest sales", @"Hots"], @[@"24 Hours", @"Available in Holidays"]]; dropDownMenu.autoCenterTitles = YES; //for the case there are only 1 or 2 titles, we center them. dropDownMenu.delegate = self; [self.view addSubview:dropDownMenu];Customization(Optional)
// Additional customizations: dropDownMenu.sectionTitleColor = UIColor.lightGrayColor; //The color of top titles dropDownMenu.sectionTitleTintColor = UIColor.redColor; //The color of top selected titles dropDownMenu.itemColor = UIColor.lightGrayColor; //The color of menu item dropDownMenu.itemTintColor = UIColor.redColor; //The color of selected menu item dropDownMenu.bottomLineHidden = YES; //Indicates whether display the bottom line dropDownMenu.maxMenuHeight = 100; //Keep this to nil usually. The Menu height is automatically calculated, and limited in rootview's height. Set this property if you want to limit the height precisely. dropDownMenu.rootView = self.view; //Keep this to nil usually. The ViewController's view will be considered as rootView if the property is not set. Set this property to limite the DropDownMenu and its actions into a particular SubView.Handle the event
#pragma mark - CYDropDownMenuDelegate - (void)CYDropDownMenu:(CYDropDownMenu *)dropDownMenu didSelectItemAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"Menu item '%@' of section '%@' is selected",dropDownMenu.sectionsItems[indexPath.section][indexPath.row], dropDownMenu.sectionTitles[indexPath.section]); }We recommend using CocoaPods to integrate the library into your project. Then code it like this:
import UIKit import CYDropDownMenu class ViewController: UIViewController,CYDropDownMenuDelegate { override func viewDidLoad() { super.viewDidLoad() let topbarHeight = UIApplication.shared.statusBarFrame.size.height + (self.navigationController != nil ? self.navigationController!.navigationBar.frame.size.height : CGFloat(0.0)) let dropDownMenu = CYDropDownMenu(frame: CGRect(x: 0.0, y: topbarHeight, width: self.view.frame.size.width, height: 45.0)) dropDownMenu.sectionTitles = ["Category", "Price"]; dropDownMenu.sectionsItems = [["All","Food", "Hotel", "Bank", "Cinema", "Entertainment"], ["$0", "$1-$100", "$101-$1000", ">$1000"]]; dropDownMenu.autoCenterTitles = true dropDownMenu.delegate = self self.view.addSubview(dropDownMenu); } // MARK: CYDropDownMenuDelegate func cyDropDownMenu(_ dropDownMenu: CYDropDownMenu!, didSelectItemAt indexPath: IndexPath!) { print("Menu item '\(dropDownMenu.sectionsItems[indexPath.section][indexPath.row])' of section '\(dropDownMenu.sectionTitles[indexPath.section])' is selected") } }CYDropDownMenu is released under the MIT license. See LICENSE for details.
