下拉标签选择器
DropDownMenuView
简单的下拉标签选择器,提供选中和取消选中,单链表和双链表组合,支持代理配置图片,可以自定义配置

仓库地址:https://github.com/gu0315/Dro...

先看下效果
:

效果图
实现思路
通过代理设置每列样式,数据原,代理数据传递给tableView,collectionView刷新数据,通过每列样式更改样式

可支持的配置项

final class DMConfiguration {

`///Cell的高度,默认44

varcellHeight:CGFloat=44;

///内容的高度

var contentViewHeight:CGFloat = 300;

///是否自适应高度,默认为False

var isAdaptiveHeight:Bool = false

///标题颜色

var textColor:UIColor = UIColor.darkGray

// 当有二级列表时,点击row 是否调用点击代理方法

var isRefreshWhenHaveRightItem:Bool = false

///标题选中颜色

var highlightedTextColor:UIColor = UIColor.orange

///有多少分区

varnumOfMenu:Int=0;

///字体大小

varfontSize:CGFloat=15

///标题的颜色

vartitleColor:UIColor= .darkGray

///是否显示分割线颜色.默认显示

var isShowSeparator:Bool = true

///分割线占比高度

var separatorHeighPercent:CGFloat = 0.5;

///分割线颜色

var separatorColor:UIColor = .lightGray

///指示器图标位置,默认文字右侧

var indicatorAlignType:IndicatorAlignType = .IndicatorAlignCloseToTitle

///背景颜色

varmaskColor:UIColor=UIColor.init(white:0.4, alpha:0.2)

///切换条件时是否更改menu title

var isRemainMenuTitle:Bool = true

///cell文字大小

varcellTitleFont=UIFont.systemFont(ofSize:14)

init() {

   self.defaultValue()

}

func defaultValue() {

}`

*   1
*   2
*   3
*   4
*   5
*   6
*   7
*   8
*   9
*   10
*   11
*   12
*   13
*   14
*   15
*   16
*   17
*   18
*   19
*   20
*   21
*   22
*   23
*   24
*   25
*   26
*   27
*   28
*   29
*   30
*   31
*   32
*   33
*   34
*   35
*   36
*   37
*   38
*   39
*   40
*   41
*   42
*   43
*   44
*   45
*   46
*   47
*   48
*   49
*   50
*   51
*   52
*   53
*   54
*   55
*   56
*   57
*   58
*   59
*   60
*   61
*   62
*   63
*   64
*   65
*   66
*   67
*   68
*   69
*   70
*   71
*   72
*   73

}

代理回调

@objc public protocol DMenuViewDataSource: NSObjectProtocol {

`///返回有多少列

@objc func numberOfColumnsInMenu(menu:DropDownMenuView) -> Int

///左侧TableView每列有多少条数据

@objcfuncnumberOfRowsInColumn(menu:DropDownMenuView, column:Int) ->Int

///左侧TableView对应的每行的数据

@objcfunctitleForRowAtIndexPath(menu:DropDownMenuView, column:Int, row:Int) ->DMRowData

///右侧CollectionView或者TableView有多少条数据

@objcoptionalfuncnumberOfRightItemInMenu(menu:DropDownMenuView, column:Int, row:Int) ->Int

///右侧CollectionView或者TableView对应的每行的数据

@objcoptionalfunctitleForRightRowAtIndexPath(menu:DropDownMenuView, column:Int, leftRow:Int,

rightRow:Int) ->DMRowData

///返回每列的类型,默认只有一个tableView

@objc optional func columnTypeInMenu(menu:DropDownMenuView, column: Int) ->

 DMenuViewColumnType

///左边tableView所占比例

@objcoptionalfuncleftTableViewWidthScale(menu:DropDownMenuView, column:Int) ->CGFloat`

*   1
*   2
*   3
*   4
*   5
*   6
*   7
*   8
*   9
*   10
*   11
*   12
*   13
*   14
*   15
*   16
*   17
*   18
*   19
*   20
*   21
*   22
*   23
*   24
*   25
*   26
*   27
*   28
*   29
*   30
*   31

}

@objc public protocol DMenuViewDelegate: NSObjectProtocol {

`///点击回掉

@objcoptionalfuncdidSelectRowAtIndexPath(menu:DropDownMenuView, column:Int, leftRow:Int,

rightRow:Int);`

*   1
*   2
*   3
*   4
*   5

///标签选择显示状态

@objcoptionalfuncmenuIsShow(menu:DropDownMenuView, isShow:Bool)

}

03-05 21:00