一个iOS表单框架-UFKit

效果:

使用:

 pod 'UFKit'- (void)viewDidLoad {[super viewDidLoad];__block UFFormView *formView = [UFFormView makeFormView:^(UFFormViewMaker * _Nonnull make) {make.addSection([UFSection makeSection:^(UFSectionMaker * _Nonnull make) {make.addRow([UFAvatarRow makeAvatarRow:^(UFAvatarRowMaker * _Nonnull make) {make.cornerRadius(30).avatarImage([UIImage imageNamed:@"touxiang"]).avatarDidSelected(^(__kindof UFAvatarRow * _Nonnull row, UIImageView * _Nonnull avatarView) {NSLog(@"你点击了头像");}).title(@"头像").value(@"http://img0.imgtn.bdimg.com/it/u=2572957358,1108684168&fm=26&gp=0.jpg").name(@"avatar").accessoryType(UFRowAccessorySpace);}]).addRow([UFTextFieldRow makeTextFieldRow:^(UFTextFieldRowMaker * _Nonnull make) {make.title(@"姓名").value(@"苹果").name(@"name").accessoryType(UFRowAccessorySpace);}]).addRow([UFRadioGroupRow makeRadioGroupRow:^(UFRadioGroupRowMaker * _Nonnull make) {make.itemArray(@[@"男",@"女"]).title(@"性别").value(@"男").name(@"gender").accessoryType(UFRowAccessorySpace);}]).addRow([UFTextFieldRow makeTextFieldRow:^(UFTextFieldRowMaker * _Nonnull make) {make.maxLength(11).regex(@"^[1][3-9]*$").keyboardType(UIKeyboardTypeNumberPad).title(@"联系方式").name(@"mobile").accessoryType(UFRowAccessorySpace);}]).addRow([UFMobileCodeRow makeCodeRow:^(UFCodeRowMaker * _Nonnull make) {make.codeStyle([UFMobileCodeStyle makeMobileCodeStyle:^(UFMobileCodeStyleMaker * _Nonnull make) {}]).codeDidClicked(^(__kindof UFMobileCodeRow * _Nonnull row, UIButton * _Nonnull button) {NSLog(@"点了了获取验证码");}).maxLength(4).keyboardType(UIKeyboardTypeNumberPad).title(@"验证码").name(@"code").accessoryType(UFRowAccessorySpace);}]).addRow([UFPickerViewRow makePickerViewRow:^(UFPickerViewRowMaker * _Nonnull make) {make.itemArray(@[@"iOS",@"macOS",@"swift",@"iPhone",@"iPad",@"iPod"]).title(@"技能").value(@"iOS").name(@"skills").accessoryType(UFRowAccessoryDisclosureIndicator);}]).addRow([UFMultiplePickerViewRow makeMultiplePickerViewRow:^(UFMultiplePickerViewRowMaker * _Nonnull make) {make.itemArray(@[@"看电影",@"旅游",@"看书",@"打游戏",@"篮球",@"足球",@"其他"]).title(@"爱好").value(@"打游戏,其他").name(@"hobby").accessoryType(UFRowAccessoryDisclosureIndicator);}]).addRow([UFDatePickerRow makeDatePickerRow:^(UFDatePickerRowMaker * _Nonnull make) {make.datePickerMode(UIDatePickerModeDate).dateFormat(@"yyyy-MM-dd").title(@"生日").name(@"birthday").accessoryType(UFRowAccessoryDisclosureIndicator);}]).addRow([UFSwitchRow makeSwitchRow:^(UFSwitchRowMaker * _Nonnull make) {make.tintColor([UIColor redColor]).title(@"免打扰").value(SWITCH_ON).name(@"allow").accessoryType(UFRowAccessorySpace).valueDidChanged(^(__kindof UFRow * _Nonnull row, __kindof NSString * _Nonnull value) {if ([row.value boolValue]) {NSLog(@"开");} else {NSLog(@"关");}});}]).addRow([UFPlateNumberRow makePlateNumberRow:^(UFPlateNumberRowMaker * _Nonnull make) {make.title(@"车牌号").value(@"鲁A123456").name(@"plate").accessoryType(UFRowAccessorySpace);}]).addRow([UFTextViewRow makeTextViewRow:^(UFTextViewRowMaker * _Nonnull make) {make.maxLength(120).title(@"个人简介").value(@"苹果公司是美国一家高科技公司。由史蒂夫·乔布斯、斯蒂夫·沃兹尼亚克和罗·韦恩等人于1976年4月1日创立,总部位于加利福尼亚州的库比蒂诺").name(@"introduction").accessoryType(UFRowAccessorySpace);}]);}]).addSubmitButton([UFActionButton makeActionButton:^(UFActionButtonMaker * _Nonnull make) {make.titleForState(@"提交", UIControlStateNormal).titleColorForState([UIColor whiteColor], UIControlStateNormal).cornerRadius(17).backgroundColor([UIColor redColor]).actionButtonClick(^(UFActionButton * _Nonnull button) {NSLog(@"提交的信息:\n%@",[formView toDictionary]);});}]).addToSuperView(self.view);}];[formView mas_makeConstraints:^(MASConstraintMaker *make) {make.edges.mas_equalTo(self.view);}];
}复制代码

依赖:

'Masonry', '~> 1.1.0'

'SDWebImage', '~> 5.0.6'

'IQKeyboardManager', '~> 6.3.0'

github

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349903.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言手写指针和乘号,C-学会使用指针(示例代码)

先说:唯手熟尔指针指针存储着一个内存空间的地址定义一个指针int a;int * p;定义一个指针,只需在变量前面加一个 * 号。这里的指针只能存储一个存放整数的内存空间的地址指针如何存储地址p &a;&叫取地址符。这样整形指针…

考后反思7.25

D1 考试时首先看的第一题,不会,然后看第二题,原题!!!! 第二题啥也没想,就只是打了一个tarjan判割点, 打完的时候有点慌,总觉得自己打错了什么,调了…

android getinstance 方法,Android中的'new Fragment()'和'Fragment.getInstance()'有什么区别?...

当我们片段添加到特定的布局,我们可以使用folloing码Fragment fragment new SampleFragment();FragmentManager fragmentManager getSupportFragmentManager();FragmentTransaction fragmentTransaction fragmentManager.beginTransaction();fragmentTransaction…

查找发布地图的 REST URL并查询相关信息

1、登录ArcGIS Server Manager 2、登录后,里面是以前自己发布的地图服务 3、点击自己发布的地图,然后按下功能选项,再点击箭头来找到URL 4、点击进去,分别能从红圈中找到相关的信息,分别为arcgis JavaScript&#xff0…

maven使用testng_使用Maven Failsafe和TestNG分别运行单元测试和集成测试

maven使用testng最近,对于我的新宠物项目,我决定我希望在标准mvn测试期间执行一些测试,而仅在不同阶段执行一些其他测试 ,我们称其为集成阶段。 我在谷歌上搜索,似乎没有任何工作,因此在努力使安装工作顺利…

android webview 重定向 goback,Android WebView 网址重定向影响 goBack

我们在使用 Android 自带的控件 WebView 访问某网址的时候, 网址会通过某些方式进行重定向. 这时会出现一个问题.我们在使用 Android 自带的控件 WebView 访问某网址的时候, 网址会通过某些方式进行重定向. 这时会出现一个问题.如下所示:你想要在 『A网址』 中打开 『C网址』, …

android 仿qq it蓝豹,《IT蓝豹》listview实现各种版面设计功能

本项目主要listview实现各种版面设计功能,有实现列表的,gridview效果的,有混排效果的等等。自定义TwoWayView继承RecyclerView,通过TwoWayView去根据布局实现到底选择哪一个效果,本项目来自:https://github…

AWS:启动安装了APOC的Neo4j实例

安装Neo4j之后,我要做的第一件事就是安装APOC库 ,但是我发现在AWS上旋转服务器时这是一个手动过程,所以我想简化一下。 已经有一个Neo4j AMI可以安装Neo4j 3.2.0 ,我的同事Michael指出,我们可以通过编写脚本并将其作为…

NOIP模拟测试8「寿司」

考试时打的类似$n^2$暴力,然后炸了只有10分 后来验证我的算法伪了。 题解 显然你有一种解法,假设你要在一个B点断开将R分别移向最左 最右,这样只用分别计算B点右面蓝色数量左面蓝色数量就得到了一个ans 这个题有一个很不显然的结论&#xff0…

glassfish hk2_使用GlassFish 3.1.2.2和Primefaces 3.4的JDBC领域和基于表单的身份验证

glassfish hk2我的博客上最受欢迎的帖子之一是有关JDBC安全领域和带有Primefaces的GlassFish上基于表单的身份验证的简短教程。 在收到有关它不再适用于最新的GlassFish 3.1.2.2的评论后,我认为可能是时候重新访问它并提出更新的版本了。 开始了: 制备 …

NOIP模拟测试8「匹配·回家」

匹配 哈希能A 水到爆炸 回家 事实上我做过一个原题,甚至比这个回家难的多,而且那个题多组询问必经点 然后我做一组询问就打炸了 大约就是删了很多东西,然后自己想的太简单了 直接统计了割点,懒得打lca和树上差分,懒得打…

将CloudWatch Logs与Cloudhub Mule集成

在此博客中,我将解释如何为您的Mule CloudHub应用程序启用AWS Cloudwatch日志 。 AWS提供了Cloudwatch Logs Services,以便您可以更好地管理日志。 它比松散便宜。 由于cloudhub会自动翻转超过100 MB的日志,因此我们需要一种机制来更有效地管…

android网络重试机制,okhttp源码解析(四):重试机制

前言这一篇我们分析okhttp的重试机制,一般如果网络请求失败,我们会考虑连续请求多次,增大网络请求成功的概率,那么okhttp是怎么实现这个功能的呢?正文首先还是回到之前的InterceptorChain:Response getResp…

构造入门

构造死磕 什么是构造 小学中学奥数先用数学解决再编程实现的构造题一般算法无法解决\(NOI\)难度\(PJ-\)代码量坑构造举例 CF743C Vladik and fractions 题目让我们构造一组数字,满足\(\frac{2}{n} \frac{1}{x} \frac{1}{y} \frac{1}{z}\)第一眼看到就想到听老师讲了半天才知…

王成录华为鸿蒙系统,华为手机销量仍在增长!华为王成录:手机会是鸿蒙OS系统的中心...

【天极网手机频道】由于制裁,华为遭到前所未有的断供,外界有不少声音都在担心华为手机出货量将会出现暴跌。不过昨日华为开发者大会举办期间,华为消费者业务软件部总裁王成录表示,华为手机销量仍在增长中。昨天的华为开发者大会&a…

28线程

进程:计算机执行的任务 线程:执行任务中的小任务 多线程 计算机再执行过程中,再同一时间只能让cpu的一个核执行一个进程。进程有多个线程构成,再同一时刻Cpu只能处理一个线程。 引入多线程 当线程被cpu执行时cpu开始工作&#xff…

什么是javax.ws.rs.core.context? [第3部分]

如何使用Context批注 在什么是javax.ws.rs.core.context的第2部分中? 您学习了如何使用Context批注从SecurityContext类的注入实例检索安全信息,以及如何通过ResourceContext实例使用JAX-RS资源类。 在本文中,您将学习如何将Context批注与请…

html 字幕飘动效果,html 滚动字幕 制作滚动字幕效果 参数

制作滚动字幕效果:marquee标签 如下:<MARQUEE directionup height146 οnmοuseοutstart() οnmοuseοverstop() scrollAmount4> </marquee>参数说明:direction滚动方向:up向上滚动&#xff0…

静态点分治总结

点分治是世界上最好的算法QwQ 点分治可以解决各种树上的边权点权问题,然后如果你发现这个题好像问的特别玄学,lca,树差都做不了,树上动‘龟’更做不了,只能暴力时,这个题大多数情况就是点分治了 点分治的思…

html节点上下移动,关于前端:数组元素上下移动

/*** 上、下挪动* param {number} code 下标* param {number} dir 1上移 0下移*/onMove(code, dir) {let moveComm (curIndex, nextIndex) > {let arr this.commodityInfoarr[curIndex] arr.splice(nextIndex, 1, arr[curIndex])[0]return arr}this.commodityInfo.some((…