美文网首页
一行代码集成UIPickerView,界面完全自定义

一行代码集成UIPickerView,界面完全自定义

作者: Abnerzj | 来源:发表于2018-01-16 14:57 被阅读746次

    一、前言

    每次新开项目都需要写一大篇同样的UIPickerView代码,而且样式不一样,挺浪费时间的,所以就自己封装了一个目前常见样式的ZJPickerView,一行代码即可集成,使用属性字典来添加想要控制的属性,界面控件完全支持自定义配置。

    + (void)zj_showWithDataList:(nonnull NSArray *)dataList
                   propertyDict:(nullable NSDictionary *)propertyDict
                     completion:(nullable void(^)(NSString * _Nullable selectContent))completion;
    

    废话不多说了,先上效果图:


    Demo.gif

    二、能做什么

    • 一行代码即可集成。
    • 支持任意列数据联动展示。
    • 支持自定义界面中子控件的文字颜色文字字体
    • 支持自定义PickerView的属性:PickerView的高度、PickerView一行的高度、选中内容和未选中内容文字属性
    • 支持自定义背景透明度和是否接收背景触摸事件。
    • 支持选择完内容回调,每一列选中的值用逗号分隔开。
    • 支持已选择内容是否展示在标题上及展示时是否默认滚动到已选择内容那一行。

    三、安装

    方式一:使用CocoaPods

    pod 'ZJPickerView'
    

    方式二:手动导入

    • ZJPickerView文件夹中的所有源代码拽入项目中
    • 导入主头文件:#import "ZJPickerView.h"
    ZJPickerView.h                      
    ZJPickerView.m
    

    四、示例

    方式一:直接使用

    [ZJPickerView zj_showWithDataList:@[@"IT", @"销售", @"自媒体", @"游戏主播", @"产品策划"] propertyDict:nil completion:^(NSString *selectContent) {
        NSLog(@"ZJPickerView log tip:---> selectContent:%@", selectContent);
    }];
    

    方式二:自定义想要的PickerView

    // 支持的属性列表
    // content: NSString type
    extern NSString * _Nonnull const ZJPickerViewPropertyCanceBtnTitleKey; // cance button Title(取消按钮)
    extern NSString * _Nonnull const ZJPickerViewPropertySureBtnTitleKey;  // sure button Title(确定按钮)
    extern NSString * _Nonnull const ZJPickerViewPropertyTipLabelTextKey;  // tipLabel text(选择提示标签)
    
    // color: UIColor type
    extern NSString * _Nonnull const ZJPickerViewPropertyCanceBtnTitleColorKey; // cance button Title color(取消按钮文字颜色)
    extern NSString * _Nonnull const ZJPickerViewPropertySureBtnTitleColorKey;  // sure button Title color(确定按钮文字颜色)
    extern NSString * _Nonnull const ZJPickerViewPropertyTipLabelTextColorKey;  // tipLabel text color(选择提示标签文字颜色)
    extern NSString * _Nonnull const ZJPickerViewPropertyLineViewBackgroundColorKey;  // lineView backgroundColor(分割线背景颜色)
    
    // font: UIFont type
    extern NSString * _Nonnull const ZJPickerViewPropertyCanceBtnTitleFontKey; // cance button label font, default 17.0f(取消按钮字体大小)
    extern NSString * _Nonnull const ZJPickerViewPropertySureBtnTitleFontKey;  // sure button label font, default 17.0f(确定按钮字体大小)
    extern NSString * _Nonnull const ZJPickerViewPropertyTipLabelTextFontKey;  // tipLabel font, default 17.0f(选择提示标题字体大小)
    
    // pickerView:
    // CGFloat type
    extern NSString * _Nonnull const ZJPickerViewPropertyPickerViewHeightKey;  // pickerView height, default 224 pt(pickerView高度)
    extern NSString * _Nonnull const ZJPickerViewPropertyOneComponentRowHeightKey;  // one component row height, default 32 pt(pickerView一行的高度)
    // NSDictionary
    extern NSString * _Nonnull const ZJPickerViewPropertySelectRowTitleAttrKey;  // select row titlt attribute(pickerView当前选中的文字颜色)
    extern NSString * _Nonnull const ZJPickerViewPropertyUnSelectRowTitleAttrKey;  // unSelect row titlt attribute(pickerView当前没有选中的文字颜色)
    
    // other: BOOL type
    extern NSString * _Nonnull const ZJPickerViewPropertyIsTouchBackgroundHideKey;  // touch background is hide, default NO(是否点击背景隐藏)
    extern NSString * _Nonnull const ZJPickerViewPropertyIsShowSelectContentKey;  // scroll component is update and show select content in tipLabel, default NO(选择内容后是否更新选择提示标签)
    extern NSString * _Nonnull const ZJPickerViewPropertyIsScrollToSelectedRowKey;  // when pickerView will show scroll to selected row, default NO. note:`ZJPickerViewPropertyTipLabelTextKey` Must pass by value(将要显示时是否滚动到已选择内容那一行,注意,选择提示标签tipLabel必须传内容,比如之前选择了`北京`,此时就需要传入`北京`)
    extern NSString * _Nonnull const ZJPickerViewPropertyIsAnimationShowKey;  // show pickerView is need Animation, default YES(显示pickerView时是否带动画效果)
    // CGFloat type
    extern NSString * _Nonnull const ZJPickerViewPropertyBackgroundAlphaKey;  // background alpha, default 0.5(0.0~1.0)(背景视图透明度)
    
    // 使用
    // 1.Custom propery(自定义属性)
    NSDictionary *propertyDict = @{ZJPickerViewPropertyCanceBtnTitleKey : @"取消",
                                   ZJPickerViewPropertySureBtnTitleKey  : @"确定",
                                   ZJPickerViewPropertyTipLabelTextKey  : [_selectContentLabel.text substringFromIndex:5], // @"提示内容"
                                   ZJPickerViewPropertyCanceBtnTitleColorKey : [UIColor zj_colorWithHexString:@"#A9A9A9"],
                                   ZJPickerViewPropertySureBtnTitleColorKey : [UIColor zj_colorWithHexString:@"#FF6347"],
                                   ZJPickerViewPropertyTipLabelTextColorKey : [UIColor zj_colorWithHexString:@"#231F20"],
                                   ZJPickerViewPropertyLineViewBackgroundColorKey : [UIColor zj_colorWithHexString:@"#dedede"],
                                   ZJPickerViewPropertyCanceBtnTitleFontKey : [UIFont systemFontOfSize:17.0f],
                                   ZJPickerViewPropertySureBtnTitleFontKey : [UIFont systemFontOfSize:17.0f],
                                   ZJPickerViewPropertyTipLabelTextFontKey : [UIFont systemFontOfSize:17.0f],
                                   ZJPickerViewPropertyPickerViewHeightKey : @300.0f,
                                   ZJPickerViewPropertyOneComponentRowHeightKey : @40.0f,
                                   ZJPickerViewPropertySelectRowTitleAttrKey : @{NSForegroundColorAttributeName : [UIColor zj_colorWithHexString:@"#FF6347"], NSFontAttributeName : [UIFont systemFontOfSize:15.0f]},
                                   ZJPickerViewPropertyUnSelectRowTitleAttrKey : @{NSForegroundColorAttributeName : [UIColor zj_colorWithHexString:@"#A9A9A9"], NSFontAttributeName : [UIFont systemFontOfSize:15.0f]},
                                   ZJPickerViewPropertyIsTouchBackgroundHideKey : @YES,
                                   ZJPickerViewPropertyIsShowSelectContentKey : @YES,
                                   ZJPickerViewPropertyIsScrollToSelectedRowKey: @YES,
                                   ZJPickerViewPropertyIsAnimationShowKey : @YES};
    
    // 2.Show(显示)
    __weak typeof(_selectContentLabel) weak_selectContentLabel = _selectContentLabel;
    [ZJPickerView zj_showWithDataList:dataList propertyDict:propertyDict completion:^(NSString *selectContent) {
        NSLog(@"ZJPickerView log tip:---> selectContent:%@", selectContent);
    }];
    

    五、结语

    • 如果在使用过程中遇到BUG,请Issues我,谢谢。
    • 如果你想为ZJPickerView输出代码,请拼命Pull Requests我。
    • 联系我😯 :简书 微博

    相关文章

      网友评论

          本文标题:一行代码集成UIPickerView,界面完全自定义

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