iOS下拉菜单效果实现

作者: JerryLMJ | 来源:发表于2016-08-22 11:03 被阅读17402次

实现效果:

Demo地址: https://github.com/MajorLMJ/LMJDropdownMenu
如果此demo帮助到你,请赐给一颗star,你的鼓励是我coding的动力

控件的属性以及接口:

/* 主按钮 可以自定义样式 可在.m文件中修改默认的一些属性 */ 
@property (nonatomic,strong) UIButton * mainBtn;  

/* 代理 */
@property (nonatomic, assign) id <LMJDropdownMenuDelegate>delegate;

/* 下拉列表中的选项标题以及选项高度的设置
(一些其他具体样式的需求可以在.m文件中的下拉tableView中进行自定义修改) */
- (void)setMenuTitles:(NSArray *)titlesArr rowHeight:(CGFloat)rowHeight;  

- (void)showDropDown; // 显示下拉菜单
- (void)hideDropDown; // 隐藏下拉菜单

代理函数:

@protocol LMJDropdownMenuDelegate <NSObject>

@optional
// 当下拉菜单将要显示时调用
- (void)dropdownMenuWillShow:(LMJDropdownMenu *)menu;    
// 当下拉菜单已经显示时调用
- (void)dropdownMenuDidShow:(LMJDropdownMenu *)menu;     
// 当下拉菜单将要收起时调用
- (void)dropdownMenuWillHidden:(LMJDropdownMenu *)menu;  
// 当下拉菜单已经收起时调用
- (void)dropdownMenuDidHidden:(LMJDropdownMenu *)menu;   


// 当选择某个选项时调用
- (void)dropdownMenu:(LMJDropdownMenu *)menu selectedCellNumber:(NSInteger)number; 

@end

使用:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor lightGrayColor];
    
    // 控件的创建
    LMJDropdownMenu * dropdownMenu = [[LMJDropdownMenu alloc] init];
    [dropdownMenu setFrame:CGRectMake(20, 80, 100, 40)];
    [dropdownMenu setMenuTitles:@[@"选项一",@"选项二",@"选项三",@"选项四"] rowHeight:30];
    dropdownMenu.delegate = self;
    [self.view addSubview:dropdownMenu];
}

#pragma mark - LMJDropdownMenu Delegate

- (void)dropdownMenu:(LMJDropdownMenu *)menu selectedCellNumber:(NSInteger)number{
    NSLog(@"你选择了:%ld",number);
}

- (void)dropdownMenuWillShow:(LMJDropdownMenu *)menu{
    NSLog(@"--将要显示--");
}
- (void)dropdownMenuDidShow:(LMJDropdownMenu *)menu{
    NSLog(@"--已经显示--");
}

- (void)dropdownMenuWillHidden:(LMJDropdownMenu *)menu{
    NSLog(@"--将要隐藏--");
}
- (void)dropdownMenuDidHidden:(LMJDropdownMenu *)menu{
    NSLog(@"--已经隐藏--");
}

Demo地址:
https://github.com/MajorLMJ/LMJDropdownMenu
如果此demo帮助到你,请赐给一颗star,你的鼓励是我coding的动力

版权声明:出自MajorLMJ技术博客的原创作品 ,转载时必须注明出处及相应链接!

相关文章

网友评论

  • Afunnyrainman:超出父view点击没用了,请问怎么解决。
    盐城小菜:一个不是办法的办法:导航栏隐藏
  • 安心啊啊678:楼主 请问你跟MJ什么关系啊?嘿嘿~
  • 不辣先生:老铁,这个控价的父view不是控制器的view的时候下拉列表会被遮盖掉,按钮照常显示,下拉列表的图层跑下面去了,何解
  • 小桥流水青山碧海:如果不是添加在self.view上面 tableview就看不到了
    798798123:加到window上吧,更靠谱一些。
  • 9898a:点击不了 ,显示不了下拉列表
  • 1cdb19c230be:你好 你这个控件 加在导航栏上 点击没反应有什么解决方法吗
  • Ko_Neko:那个。。当下拉框超出父控件的时候,超出的部分就没有响应了。请问有解决思路吗
  • china码农:你好,我刚才试了,这个作为tableView的headView,可以展开,但是点击不了里面的cell,应该是响应者变了,请问要怎么完善,谢谢
    china码农:@SYSYSY 老铁,这个还是自己写吧,参照思路
    SYSYSY:老铁,你这个解决了吗??/碰到和你一样的问题
  • Wy_chris:有一个问题。当界面上有多个下拉菜单时,点击一个之后,再点击另外一个,第一个不会收回去。 这个有处理方法吗?
    JerryLMJ:@wyzsy1111 有时间会继续更新
    Wy_chris:@MajorLMJ 好吧,是在代理中间做判断吧? 如果这个控件多了,就比较麻烦感觉。 大神抽时间可以解决一下啦~ :clap: :clap: :clap:
    JerryLMJ:@wyzsy1111 这个就需要你自己在代码中控制了

本文标题:iOS下拉菜单效果实现

本文链接:https://www.haomeiwen.com/subject/wogwsttx.html