SJPullDownMenu


Getting Started【开始使用】

Manually【手动导入】


  • Drag all source files under floder SJPullDownMenu to your project.【将SJPullDownMenu文件夹中的所有源代码拽入项目中】
  • Import the main header file:#import "SJPullDownMenu.h"【导入主头文件:#import "SJPullDownMenu.h"】

SJPullDownMenu.h


  • 代理方法
@protocol SJPullDownMenuDataSource <NSObject>
/**
* 下拉菜单列数
*
* @param pullDownMenu 下拉菜单
*
* @return 下拉菜单列数
*/
- (NSInteger)numberOfColsInMenu:(SJPullDownMenu *)pullDownMenu;
/**
* 下拉菜单每列按钮
*
* @param pullDownMenu 下拉菜单
* @param index 第几列
*
* @return 下拉菜单每列按钮
*/
- (UIButton *)pullDownMenu:(SJPullDownMenu *)pullDownMenu buttonForColAtIndex:(NSInteger)index;
/**
* 下拉菜单每列对应的控制器
*
* @param pullDownMenu 下拉菜单
* @param index 第几列
*
* @return 下拉菜单每列对应的控制器
*/
- (UIViewController *)pullDownMenu:(SJPullDownMenu *)pullDownMenu viewControllerForColAtIndex:(NSInteger)index;
/**
* 下拉菜单每列对应的高度
*
* @param pullDownMenu 下拉菜单
* @param index 第几列
*
* @return 下拉菜单每列对应的高度
*/
- (CGFloat)pullDownMenu:(SJPullDownMenu *)pullDownMenu heightForColAtIndex:(NSInteger)index; @end
  • 属性与方法
@interface SJPullDownMenu : UIView

/**
* 数据源
*/
@property (nonatomic, weak) id<SJPullDownMenuDataSource> dataSource;
/**
* 默认值
*/
@property (nonatomic, strong) NSArray *defaultTitleArray;
/**
* 分割线颜色
*/
@property (nonatomic, strong) UIColor *separateLineColor;
/**
* 蒙版颜色
*/
@property (nonatomic, strong) UIColor *coverColor;
/**
* 隐藏分隔线
*/
@property (nonatomic, assign) BOOL hiddenSeparateLine;
/**
* 动画持续时间
*/
@property (nonatomic, assign) CGFloat animateTime; /**
* 刷新菜单
*/
- (void)reloadMenu; @end
  • 更新标题的通知名称
/**
* 更新菜单文字通知名称(如果没有冲突,建议不要修改)
*/
static NSString * const SJUpdateMenuTitle = @"SJUpdateMenuTitle";

初始化菜单


	// 菜单按钮默认值
NSArray *defaultTitleArray = @[@"综合排序", @"价格优先", @"更多"]; // 初始化
SJPullDownMenu *menuView = [[SJPullDownMenu alloc] init];
// 设置尺寸
menuView.frame = CGRectMake(0, 20, self.view.bounds.size.width, 44);
// 设置数据源
menuView.dataSource = self;
// 设置每列按钮默认值
menuView.defaultTitleArray = defaultTitleArray; [self.view addSubview:menuView];
self.menuView = menuView; // 添加内容控制器
[self addContentViewController];

初始化内容控制器


/**
* 添加内容控制器
*/
- (void)addContentViewController { SJTestOneViewController *testOneVC = [[SJTestOneViewController alloc] init];
SJTestTwoViewController *testTwoVC = [[SJTestTwoViewController alloc] init];
SJTestThreeViewController *testThreeVC = [[SJTestThreeViewController alloc] init]; [self addChildViewController:testOneVC];
[self addChildViewController:testTwoVC];
[self addChildViewController:testThreeVC];
}

实现代理方法


// 返回下拉菜单多少列
- (NSInteger)numberOfColsInMenu:(SJPullDownMenu *)pullDownMenu
{
return self.childViewControllers.count;
} // 返回下拉菜单每列按钮
- (UIButton *)pullDownMenu:(SJPullDownMenu *)pullDownMenu buttonForColAtIndex:(NSInteger)index
{
SJButton *button = [SJButton buttonWithType:UIButtonTypeCustom]; [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor lightGrayColor] forState:UIControlStateSelected];
[button setImage:[UIImage imageNamed:@"icon_more_highlighted"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"icon_more"] forState:UIControlStateSelected]; return button;
} // 返回下拉菜单每列对应的控制器
- (UIViewController *)pullDownMenu:(SJPullDownMenu *)pullDownMenu viewControllerForColAtIndex:(NSInteger)index
{
return self.childViewControllers[index];
} // 返回下拉菜单每列对应的高度
- (CGFloat)pullDownMenu:(SJPullDownMenu *)pullDownMenu heightForColAtIndex:(NSInteger)index
{
// 设置高度
if (index == 0) { return 390;
} else if (index == 1) { return 130;
} else if (index == 2) { return 260;
} else { return 130;
}
}

更新标题

  • 为了使用更灵活,使用通知来更新标题的方式,只需要在需要的地方使用通知就可以了

    • 首先导入头文件
    #import "SJPullDownMenu.h"
    
    
    • 在需要的地方使用
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    // 更新标题
    [[NSNotificationCenter defaultCenter] postNotificationName:SJUpdateMenuTitle object:self userInfo:@{@"title" : cell.textLabel.text}];

}

```

注:这边的userInfo只可发送一个Key值,Key的name不限制

【SJPullDownMenu】框架github下载地址:https://github.com/shaojianye/SJPullDownMenu.git

【SJPullDownMenu】框架码云下载地址:https://git.oschina.net/miaomiaoshen/SJPullDownMenu.git

SJPullDownMenu下拉菜单框架使用的更多相关文章

  1. 10个优秀的 HTML5 & CSS3 下拉菜单制作教程

    下拉菜单是一个很常见的效果,在网站设计中被广泛使用.通过使用下拉菜单,设计者不仅可以在网站设计中营造出色的视觉吸引力,但也可以为网站提供了一个有效的导航方案.使用 HTML5 和 CSS3 可以更容易 ...

  2. 11个优秀的HTML5 & CSS3下拉菜单制作教程

    下拉菜单是一个很常见的效果,在网站设计中被广泛使用.通过使用下拉菜单,设计者不仅可以在网站设计中营造出色的视觉吸引力,但也可以为网站提供了一个有效的导航方案.使用HTML5和CSS3可以更容易创造视觉 ...

  3. 10个优秀的 HTML5 &amp; CSS3 下拉菜单制作教程

    下拉菜单是一个非经常见的效果.在站点设计中被广泛使用.通过使用下拉菜单.设计者不仅能够在站点设计中营造出色的视觉吸引力,但也能够为站点提供了一个有效的导航方案.使用 HTML5 和 CSS3 能够更e ...

  4. Bootstrap框架(基础篇)之按钮,网格,导航栏,下拉菜单

    一,按钮 注意:虽然在Bootstrap框架中使用任何标签元素都可以实现按钮风格,但个人并不建议这样使用,为了避免浏览器兼容性问题,个人强烈建议使用button或a标签来制作按钮. 框架中提供了基础按 ...

  5. html 布局;css3+jq 下拉菜单;table分页动态添加行;html5本地存储;简单易用的html框架

    简单好用的html框架,预览图见最后: 源码: 1.页面布局使用table: table 嵌套 +iframe 布局: 2.下拉菜单为jq+css3 动画; css input 无边框,select下 ...

  6. yii2框架dropDownList的下拉菜单用法介绍

    Yii2.0 默认的 dropdownlist 的使用方法.  代码如下 复制代码 <?php echo $form->field($model, 'name[]')->dropDo ...

  7. yii框架中的下拉菜单和单选框

    yii中的下拉菜单: 第一种: <?= $form->field($model, 'parent_id')->dropDownList(ArrayHelper::map($data, ...

  8. Html5+Mui前端框架,开发记录(四):下拉菜单绑定数据、搜索、时间控件

    1.下拉菜单绑定数据,选择后回传值 1)html: <div class="mui-input-row"> <label>xxx:</label> ...

  9. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:内嵌下拉菜单的按钮组

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

随机推荐

  1. 【原创】开源Math.NET基础数学类库使用(07)常用的数学物理常数

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 1.前 ...

  2. JSON学习

    1.JSON 语法是 JavaScript 对象表示语法的子集. l  数据在名称/值对中 l  数据由逗号分隔 l  花括号保存对象 l  方括号保存数组 JSON 值可以是: l  数字(整数或浮 ...

  3. PHP中MySQL操作

    本次使用的demo是MySQL的示例数据库employees,点击下载地址,注意在导入的时候,在employees.sql文件中,将source改成你当前的目录. PHP中的demo代码可以在ideo ...

  4. 组件化h5活动模板的实现

    需求: 实现一套灵活的活动组件模板,编辑人员只需要打开后台,拖拽相应组件,填入相应内容,最终就生成一个活动页面. 因为涉及投票,评论,关注等功能(每个功能都当做一个组件),所以一个富文本编辑器是无法实 ...

  5. ZOJ Problem Set - 1392 The Hardest Problem Ever

    放了一个长长的暑假,可能是这辈子最后一个这么长的暑假了吧,呵呵...今天来实验室了,先找了zoj上面简单的题目练练手直接贴代码了,不解释,就是一道简单的密文转换问题: #include <std ...

  6. 常见的几个meta标签元素

    1.指定字符集: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/& ...

  7. MySQL char与varchar的差异

    字符与字节的区别 一个字符由于所使用的字符集的不同,会并存储在一个或多个字节中,所以一个字符占用多少个字节取决于所使用的字符集 注意:char与varchar后面接的数据大小为存储的字符数,而不是字节 ...

  8. 使用canvas实现擦玻璃效果

    体验效果:http://hovertree.com/texiao/html5/25/ 效果图: 代码如下: <!DOCTYPE html> <html> <head la ...

  9. HTML5 Canvas彩色小球碰撞运动特效

    脚本简介 HTML5 Canvas彩色小球碰撞运动特效是一款基于canvas加面向对象制作的运动小球动画特效.   效果展示 http://hovertree.com/texiao/html5/39/ ...

  10. 装饰模式 - Decorator 和 外观模式 - Facade

    装饰模式 Decorator,不改变接口但动态给对象加入责任,所需功能按顺序串联起来控制,比生成子类灵活. 外观模式 Facade,让接口更简单.为子系统中的一组接口提供一个一致的界面. 参考: