登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

ZFJFormKit-iOS专业表单配置框架

[复制链接]
来自: zfjsyqk 分类: iOS精品源码 上传时间: 2019-7-1 16:48:33
Tag:

项目介绍:

ZFJFormKit介绍
ZFJFormKit,通过整合数据和事件为一个Model来配置不同类型的Cell来动态设置UITableView。
项目地址:https://github.com/zfjsyqk/ZFJFormKit.git
Demo地址:https://gitee.com/zfj1128/ZFJFormKit.git
博客地址:https://zfj1128.blog.csdn.net/article/details/93515776
介绍
ZFJFormKit,通过整合数据和事件为一个Model来配置不同类型的Cell来动态设置UITableView。 项目地址:https://github.com/zfjsyqk/ZFJFormKit.git Demo地址:https://gitee.com/zfj1128/ZFJFormKit.git 博客地址:https://zfj1128.blog.csdn.net/article/details/93515776
软件架构
主要通过ZFJFormModel来配置每一个Cell,这里面可以配置Cell的值和事件;还可以通过ZFJFormCellConfig来配置Cell的通用属性,当然也可以为每个不同的Cell设置不同的ZFJFormCellConfig, ZFJFormConfig类主要用于设置ZFJFormTableView的相关属性;项目的所以Cell都继承于ZFJFormCell; ZFJFormKit通过ZFJFormCell、ZFJFormModel和ZFJFormCellConfig来设置ZFJFormCell,然后又通过ZFJFormConfig来配置ZFJFormTableView,通过ZFJFormCell和ZFJFormTableView来实现我们想要的表单Form。 ZFJPlacehoderTextView是自定义带占位符placeholder的textView。 具体结构图如下:
安装教程
  • pod 'ZFJFormKit'
  • pod install
  • 导入头文件#import "ZFJFormKit.h"
使用说明
ZFJFormKit包含6中CELL类型,具体类型如下:
  1. typedef NS_ENUM(NSInteger, ZFJFormCellType) {
  2. KFormCellLabelType      = 0,    //信息展示
  3. KFormCellHeadImgType    = 1,    //右边头像
  4. KFormCellTextFieldType  = 2,    //单行输入
  5. KFormCellTextViewType   = 3,    //多行输入
  6. KFormCellSwitchType     = 4,    //右侧开关
  7. KFormCellCustomType     = 5     //自定义CELL
  8. };
复制代码

  • Cell通用配置
  1. //CELL的通用配置Model,也可以根据不同的CELL分别配置
  2. ZFJFormCellConfig *configModel = [[ZFJFormCellConfig alloc] init];
  3. //左边title
  4. configModel.titleColor = [UIColor blackColor];
  5. configModel.titleFont = [UIFont fontWithName:@"PingFangSC-Regular" size:16];
  6. //头像圆角尺寸
  7. configModel.headImgRadius = 5;
  8. //CELL右边值得颜色和字体
  9. configModel.valueColor = [UIColor blueColor];
  10. configModel.valueFont = [UIFont fontWithName:@"PingFangSC-Regular" size:16];
  11. //分割线的配置
  12. configModel.separatorLineColor = [UIColor groupTableViewBackgroundColor];
  13. configModel.isHiddenLine = NO;
  14. //占位符颜色
  15. configModel.placeholderColor = [UIColor colorWithRed:0.776 green:0.776 blue:0.800 alpha:1.00];
  16. //控件左右两边的间距
  17. configModel.marginSize = 15;
复制代码


  • 文本信息展示 这里的不能修改也不是绝对意义上的不能修改,可以通过设置isCanSelect属性,然后在ZFJFormTableView的点击事件回调中didSelectRowBlock,重新设置model.value的值.
  1. //姓名 不能修改,所以不能输入
  2. ZFJFormModel *name_model = [[ZFJFormModel alloc] init];
  3. name_model.formCellType = KFormCellLabelType;
  4. name_model.configModel = _configModel;
  5. name_model.title = @"姓名";
  6. name_model.value = @"张福杰";
  7. name_model.height = 50;
  8. [self.dataArray addObject:name_model];
复制代码


  • 头像类型Cell设置 需要说明的是iconObject是NSObject类型,支持的类型有UIImage或者NSString或者NSData;这里面设置isCanSelect为YES,可以点击重新从相册里面设置新的图片,当然这个功能不单单只是用于头像功能,用户也可以根据自己的需要设置其他类型的image的cell;
  1. /**
  2. 头像(UIImage或者NSString或者NSData)
  3. */
  4. @property (nonatomic,strong) NSObject *iconObject;

  5. ZFJFormModel *headImg_model = [[ZFJFormModel alloc] init];
  6. //CELL类型
  7. headImg_model.formCellType = KFormCellHeadImgType;
  8. //CELL的通用配置Model,也可以根据不同的CELL分别配置
  9. headImg_model.configModel = configModel;
  10. headImg_model.title = @"头像";
  11. headImg_model.iconObject = @"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1561278644354&di=3cc92ef55c2336b29b1fe09cbf614705&imgtype=0&src=http%3A%2F%2Fimg4q.duitang.com%2Fuploads%2Fitem%2F201408%2F08%2F20140808171354_XkhfE.jpeg";
  12. headImg_model.height = 100;
  13. headImg_model.isCanSelect = YES;
  14. headImg_model.isShowCellRightImg = YES;
  15. [self.dataArray addObject:headImg_model];
复制代码


  • 单行输入
  1. //昵称(单行输入 KFormCellTextFieldType)
  2. ZFJFormModel *nickName_model = [[ZFJFormModel alloc] init];
  3. nickName_model.formCellType = KFormCellTextFieldType;
  4. nickName_model.configModel = configModel;
  5. nickName_model.title = @"昵称";
  6. nickName_model.placeholder = @"请输入您的昵称";
  7. nickName_model.height = 50;
  8. nickName_model.validateBlock = ^BOOL(ZFJFormModel * _Nullable model) {
  9. if(model.value <= 0){
  10. [MBProgressHUD SHOWPrompttext:model.placeholder];
  11. return NO;
  12. }
  13. return YES;
  14. };
  15. [self.dataArray addObject:nickName_model];
复制代码


  • 多行输入 多行输入可以设置最大高度textView_maxHeight,如果超过最大高度,则textView内就进行滚动展示,cell 的高度也不会增加;
  1. //个人简介(KFormCellTextViewType 多行输入)
  2. ZFJFormModel *introduction_model = [[ZFJFormModel alloc] init];
  3. introduction_model.formCellType = KFormCellTextViewType;
  4. introduction_model.configModel = configModel;
  5. introduction_model.title = @"个人简介";
  6. introduction_model.placeholder = @"请输入您的个人简介";
  7. introduction_model.height = 50;
  8. introduction_model.textView_maxHeight = 100;
  9. introduction_model.validateBlock = ^BOOL(ZFJFormModel * _Nullable model) {
  10. if(model.value <= 0){
  11. [MBProgressHUD SHOWPrompttext:model.placeholder];
  12. return NO;
  13. }
  14. return YES;
  15. };
  16. [self.dataArray addObject:introduction_model];
复制代码


  • 选择器 这里选择器的打开或者关闭状态可以通过设置model.value来控制,当model.value==nil的时候,选择器从处于关闭状态,反之处于打开状态;
  1. //选择器(KFormCellSwitchType)
  2. ZFJFormModel *switch_model = [[ZFJFormModel alloc] init];
  3. switch_model.formCellType = KFormCellSwitchType;
  4. switch_model.configModel = configModel;
  5. switch_model.title = @"是否开启好友推荐";
  6. switch_model.placeholder = @"请选择";
  7. switch_model.height = 50;
  8. switch_model.validateBlock = ^BOOL(ZFJFormModel * _Nullable model) {
  9. if(model.value == nil){
  10. [MBProgressHUD SHOWPrompttext:model.placeholder];
  11. return NO;
  12. }
  13. return YES;
  14. };
  15. [self.dataArray addObject:switch_model];
复制代码


  • 自定义Cell 关于自定义cell,一定要注册cell类型,即传custom_model.customCls = [SaveCell class];SaveCell即为你自定义的cell,自定义cell可以设置ZFJFormCellDelegate代理,也可以不用设置; 如果自定义Cell有事件需要处理可以使用custom_model.customCellEventBlock来接收事件和处理事件;
  1. //自定义CELL(KFormCellCustomType 保存)
  2. ZFJFormModel *custom_model = [[ZFJFormModel alloc] init];
  3. custom_model.formCellType = KFormCellCustomType;
  4. custom_model.configModel = configModel;
  5. custom_model.customCls = [SaveCell class];
  6. custom_model.height = 120;
  7. custom_model.isCanSelect = YES;
  8. //自定义CELL事件处理
  9. custom_model.customCellEventBlock = ^(id  _Nonnull obj) {
  10. NSLog(@"obj == %@",obj);
  11. [ZFJFormTool validateDataArray:self.dataArray];
  12. };
  13. [self.dataArray addObject:custom_model];
复制代码


自定义Cell的设置如下:
  1. - (void)configCellWithModel:(ZFJFormModel *)model{
  2. NSLog(@"aaaaaaa");
  3. _model = model;
  4. }

  5. - (void)saveBtnClick:(UIButton *)button{
  6. //自定义CELL的事件处理
  7. if(_model != nil && _model.customCellEventBlock){
  8. _model.customCellEventBlock(button);
  9. }
  10. }
复制代码

  • ZFJFormTableView配置
  1. - (ZFJFormTableView *)tableView{
  2. if (_tableView == nil){
  3. ZFJFormConfig *formConfig = [[ZFJFormConfig alloc] init];
  4. formConfig.backgroundColor = [UIColor groupTableViewBackgroundColor];

  5. _tableView = [[ZFJFormTableView alloc] initWithFrame:CGRectMake(0, KNavBarHei, ZFJForm_ScreenWidth, ZFJForm_ScreenHeight - KNavBarHei) config:formConfig];
  6. }
  7. return _tableView;
  8. }
复制代码


事件处理接收
  1. _tableView.didSelectRowBlock = ^(NSIndexPath * _Nullable indexPath, ZFJFormModel * _Nullable model) {
  2. NSLog(@"%@",model);
  3. };
复制代码

  • ZFJPlacehoderTextView ZFJPlacehoderTextView是自定义带占位符placeholder的textView,使用如下:
  1. - (ZFJPlacehoderTextView *)textView{
  2. if(_textView == nil){
  3. _textView = [[ZFJPlacehoderTextView alloc] init];
  4. _textView.font = [UIFont systemFontOfSize:14];
  5. _textView.delegate = self;
  6. _textView.textAlignment = NSTextAlignmentRight;
  7. _textView.placeholder = @"这是提示文字";
  8. }
  9. return _textView;
  10. }
复制代码


结束语
闲来无事,把我在上个项目中自己封装表单配置框架抽出来,封装拿给大家使用,也欢迎各位大神提出宝贵的意见和建议,也欢迎大家进群交流365152048!

相关源码推荐:

    我来说两句
    *滑动验证:
    所有评论(34)
    code4app热心网友 2019-7-8 14:23:13
    楼主威武啊,Code4App有你更给力!
    回复
    dhl110925 2019-7-9 09:01:32
    正需要啊,感谢楼主无私分享!
    回复
    code4app热心网友 2019-7-9 14:53:11
    我只是路过打酱油的。
    回复
    manmanstrong 2019-7-9 14:53:19
    楼主威武啊,Code4App有你更给力!
    回复
    manmanstrong 2019-7-9 14:53:28
    精华内容,楼主V5!
    回复
    manmanstrong 2019-7-9 14:53:33
    楼主用心了,内容非常精彩。
    回复
    code4app热心网友 2019-7-10 12:00:37
    正需要啊,感谢楼主无私分享!
    回复
    code4app热心网友 2019-7-10 12:20:18
    楼主用心了,内容非常精彩。
    回复
    code4app热心网友 2019-7-10 20:43:37
    正需要啊,感谢楼主无私分享!
    回复
    1234下一页
    提取码:  下载次数:7 状态:已购或VIP 售价:0(原价:15)金钱 下载权限:初级码农 
    314 0 7
    相关代码
      联系我们
      首页/微信公众账号投稿

      帖子代码编辑/版权问题

      QQ:435399051,742864542

      如何获得代码达人称号?

      代码贡献英雄榜
      用户名 下载数
      代码分类
      通过邮件订阅最新 Code4App 信息
      上一条 /4 下一条
      联系我们
      关闭
      合作电话:
      13802416937
      Email:
      435399051@qq.com
      商务市场合作/投稿
      问题反馈及帮助
      联系我们

      广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

      快速回复 返回顶部 返回列表