iOS 自适应表单SWForm

前言

前段时间封装了一个自适应表单框架,但是由于时间仓促,没有加以完善优化,导致其中有部分字段无效以及也有提出关联的第三方框架较多等问题,故产生了重构的想法。

现版本舍弃了原有第三方的强关联,并将所有字段逐一重新配置。在提供了原有功能的基础上,新增了 单位 以及 字数显示等功能。同时也提供了相关图片选择加载API,方便使用。如果有任何问题或建议,可以留言评论或私信我。

Github 地址: iOS 高度封装自适应表单SWForm (重构版)

一、项目下载

在 Github 上的项目提供了 SWForm 实际使用中的示例 SWFormDemo 以及 SWForm 框架。在实际使用中,只需要将 SWForm 文件夹导入项目中即可使用。

二、表单条目 SWFormItem

1)条目类别 SWFormItemType

SWForm 中共支持四种表单条目类型:

typedef NS_ENUM(NSInteger, SWFormItemType) {
    /**
     表单条目可单行或多行输入(标题居左)
     */
    SWFormItemTypeInput = 0,
    /**
     表单条目可选择(标题居左)
     */
    SWFormItemTypeSelect = 1,
    /**
     表单条目可多行输入(标题居上)
     */
    SWFormItemTypeTextViewInput = 2,
    /**
     表单条目包含图片选择
     */
    SWFormItemTypeImage = 3,
};
复制代码

以上四种类型基本上可支持大部分表单系统结构(若有不满足的,可留言评论)。

2)标题样式 SWTitleShowType

对于表单中可能出现的必填(必选)标题样式需求,框架中也提供了三种表单条目标题样式:

/**
 必选条目标题呈现形式类别
 */
typedef NS_ENUM(NSInteger, SWTitleShowType) {
    /**
     默认呈现形式,如: 标题(必填)
     */
    SWTitleShowTypeDefault,
    /**
     标题前部加红色*,如: *标题
     */
    SWTitleShowTypeRedStarFront,
    /**
     标题后部加红色*,如: 标题*
     */
    SWTitleShowTypeRedStarBack,
    /**
     仅显示标题
     */
    SWTitleShowTypeOnlyTitle,
};
复制代码

由于在项目中,标题样式基本保持一致,所以单独设置了全局的标题样式,可根据自身需求选择不同的标题样式。

// 表单标题显示类别
NSInteger const SW_TitleShowType = SWTitleShowTypeRedStarFront;
复制代码
3)条目创建方式

为方便用户快捷构建表单条目,SWForm 提供了两种表单条目快捷构建函数,以便快捷构建新增以及详情表单条目:

/**
 SWFormItem_Add 快捷构建新增表单条目

 @param title 标题
 @param info 详情
 @param itemType 条目类别
 @param editable 是否可编辑
 @param required 是否必填
 @param keyboardType 键盘类别
 */
FOUNDATION_EXPORT SWFormItem *SWFormItem_Add(NSString *title, NSString *info, SWFormItemType itemType, BOOL editable, BOOL required, UIKeyboardType keyboardType);

/**
 SWFormItem_Info 快捷构建详情表单条目
 */
FOUNDATION_EXPORT SWFormItem *SWFormItem_Info(NSString *title, NSString *info, SWFormItemType itemType);
复制代码
4)条目单位类别 SWFormItemUnitType

对于表单中可能出现的金额、年限等条目,此版本也提供了单位自动添加功能。主要有以下几种单位类别:

typedef NS_ENUM(NSInteger, SWFormItemUnitType) {
        /**
         无单位
         */
        SWFormItemUnitTypeNone = 0,
        /**
         元
         */
        SWFormItemUnitTypeYuan,
        /**
         年
         */
        SWFormItemUnitTypeYear,
        /**
         自定义单位
         */
        SWFormItemUnitTypeCustom,
    };
复制代码

表单条目单位类别默认为 SWFormItemUnitTypeNone, 即无单位。表单框架中已经定义了常用的单位,例如:元、年等。防止有未涉及到的单位,同时提供了单位自定义,自定义单位类别为 SWFormItemUnitTypeCustom

/**
 条目附带单位
 */
@property (nonatomic, copy) NSString *unit;
复制代码

可以根据需求,设置 unit 属性的值,以达到单位自定义的目的。

5)输入字数显示

SWFormItemTypeTextViewInput 类型的表单条目可通过 showLength 添加输入字数显示。

/**
 是否显示当前字数
 只在 SWFormItemTypeTextViewInput 类型下有效,若无最大字数限制,则只显示字数; 若有字数限制,则显示 "当前字数/最大字数"
 */
 @property (nonatomic, assign) BOOL showLength;
复制代码

三、表单 section 条目 SWFormSectionItem

表单 section 条目可根据需求将不同条目划分到不同的section中,并提供了 sectionHeader 和 sectionFooter 方便用户指定自定义界面。

与表单条目类似,SWForm 也提供了 SWFormSectionItem 的快捷构建函数:

/**
 SWSectionItem 快捷构建表单section条目

 @param items 表单section包含的条目集合
 */
FOUNDATION_EXPORT SWFormSectionItem *SWSectionItem(NSArray *items);
复制代码

四、API 说明

由于舍弃了原先使用的第三方框架,以方便用户根据需求自行定制,故 SWForm 提供了多个API,用户可以 SWFormDemo 中示例为参考,实现个性化定制。

SWForm 主要提供了三个 API 文件,分别为 UIImageView+FormImageSWFormImageCell+ImageHandleSWFormHandler

UIImageView+FormImage 提供了表单图片条目中图片 URL 加载 API,可以在此函数中实现如 SDWebImage 以实现图片URL加载:

/**
 图片附件条目图片加载

 @param url 图片加载的url
 */
- (void)sw_setImageItemWithUrl:(NSURL *)url;
复制代码

SWFormImageCell+ImageHandle 提供了表单图片条目中图片添加 API 以及图片预览 API,使用者可以在此 API 中添加自定义图片选择以及图片预览功能:

/**
 选择图片数据回调
 
 @param maxImages 最大可选择图片数
 @param currentImages 当前选择图片数
 @param completion 选择图片数组回调
 */
- (void)sw_selectImageWithMaxImages:(NSInteger)maxImages currentImages:(NSInteger)currentImages completion:(void(^)(NSArray *selectImages))completion;

/**
 图片浏览

 @param images 图片数组
 @param currentIndex 当前浏览的index
 */
- (void)sw_photoBrowserWithImages:(NSArray *)images currentIndex:(NSInteger)currentIndex;
复制代码

SWFormHandler 为数据校验文件,提供了相机权限、相册权限以及表单空数据校验功能:

/**
 必选(必填)数据空数据校验,可根据需求定制

 @param datas 表单数据源
 @param success 必选(必填)数据全部校验成功
 @param failure 必选(必填)数据某一项校验失败
 */
+ (void)sw_checkFormNullDataWithWithDatas:(NSArray *)datas success:(void(^)(void))success failure:(void(^)(NSString *error))failure;

/**
 校验是否有相机权限
 */
+ (void)sw_checkCameraAuthorizationStatusWithGrand:(void(^)(BOOL granted))permissionGranted;

/**
 校验是否有相册权限
 */
+ (void)sw_checkAlbumAuthorizationStatusWithGrand:(void(^)(BOOL granted))permissionGranted;
复制代码

五、使用说明

在使用 SWForm 快捷构建表单时,只需提供表单数据源即可,跟根据表单层级动态添加数据源。SWFormDemo 示例中添加了 SWForm 的新增表单、详情表单、提交以及编辑功能的示例,具体使用,请参考 SWFormDemo

不忘初心,方得始终。希望尽笔者微薄之力,可以对大家有所帮助。

Github 地址: iOS 高度封装自适应表单SWForm (重构版)

转载于:https://juejin.im/post/5b32e322e51d4558d43fdbec

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值