一个登陆界面的实现 (使用RAC + Masonry)

前言

前段时间看叶孤城直播代码,发现一个登陆界面,简单描述下:登陆按钮的背景色的填充长度随着输入密码长度的变化而变化(有点像密码安全程度那种)。

完整工程你可以在我的github下载到https://github.com/94haox/WTLoginPage;

前期准备

  1. RAC 2.5版本
  2. Masonry

推荐使用cocoaPods安装

开始

需求:用户名11位,密码6位。当用户名11位时,才可以输入密码,当密码和用户名的位数都正确时才可以进行登录操作,同时登陆按钮的背景色的填充长度随密码长度变化

我们想实现需求,关键点在哪?

  1. 需要考虑背景色问题
  2. 需要监听用户名和密码的长度

思考

  1. button的背景色的填充长度是没有这种说法的,只能完全填充;那么我们可以将背景色设为clearColor,然后在其下面贴一个view 或者 progressView,view 通过改变width来显示长度,progress者可以通过设置tintcolor配合progress属性来;
  2. 实时监听UITextField,不用RAC怎样写,不写,我们来看看用RAC怎么解决这个问题;

实现

  1. 搭建界面(所有的属性都写了getter方法)


    界面搭建(定义属性).png

使用masonry 约束


约束.png

上面部分我就不介绍了,其实masonry还是蛮简单好用的;看看官方示例,很快就能上手

  1. 事件的监听
    监听1.png

    这一步是将userNameTFtextpassWordTFenable属性关联起来; 根据userName 是否是11位来改变 passTF的enable。

监听2.png

passWordTF的背景色和它自身的enable属性联系起来,做提示作用
如果可以输入则背景色为白, 如果不可输入则是黄色

监听3.png

filter 筛选 如果密码长度是0 则width是0
如果密码的长度大于0,并且小于7,就将这个值传下去;

map 接收值,然后将它转换为NSNumber类型的值继续传到下一步

next 接收map转换过的值, 然后计算底色的长度,OK 完成

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 友情提示:《琅琊榜》第二集
    秘密梦红楼阅读 903评论 0 1
  • 可能我需要再看书几个月... 然后再去找工作... 而不应该这样着急? 主要是有人一直在造谣和泼脏水... 我怕离...
    六六六六六六六六六阅读 237评论 0 0
  • 到这个点又想起来写日记了,想想今天写的啥呢!我这肚子里面的墨水可真够少的,接下来就慢慢积累呗! 最近很忙很忙,真的...
    brood阅读 316评论 0 1