七月多写的一个控件,一直想着写篇总结的.先拿使用说明占个位置,之后再补吧.
下载:
https://github.com/YanChen-ing/YCIMutilevelMenuDemo.git
YCIMutilevelMenu
控件名: 多级菜单
继承: UIView
概述
依据上级菜单选中项,展示下级菜单.具有良好的可扩展性,并支持请求加载,默认选中,置顶选项等功能.
设计
基本原理
多级菜单视图,包含两种基本元素:
选项 (option)
保存展开菜单的信息的模型.
菜单 (menu)
选项展开后,对应的样式.
多级菜单中,持有显示数组(displayingOptions
displayingMenus
).通过改变数组元素,并调用- refreshViewsFrame
刷新界面显示.
解耦
为使多级菜单具有良好的可扩展性.通过以下方式解耦:
多级菜单 – 选项
YCIMenuOptionConfig.plist
保存对应type信息.
通过type,使用option工厂方法创建option.
多级菜单 – 菜单
通过option的属性menuClassName
获得,并创建对应menu.
@protocol YCIMenuDelegate
:菜单调用多级菜单的方法
@protocol YCIMenuProtocol
:多级菜单调用菜单的方法
用法
使用
0.准备
对于使用多级菜单,一般为较多且复杂的选项组.因此建议使用json文件存储选项内容.通过option的方法+ menuOptionWithJsonFile:
生成选项.
1.引入头文件
#import "YCIMutilevelMenu.h"
2.创建多级菜单
- (YCIMutilevelMenu *)MLMenu{
if (!_MLMenu) {