iOS标签选择器

DropDownMenuView

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

仓库地址:Demo

先看下效果:

效果图

实现思路

通过代理设置每列样式,数据原,代理数据传递给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() {

    }

}

代理回调

@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

}

@objc public protocol DMenuViewDelegate: NSObjectProtocol {

    ///点击回掉

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

    rightRow:Int);

   ///标签选择显示状态

   @objcoptionalfuncmenuIsShow(menu:DropDownMenuView, isShow:Bool)

}



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容