UI基础iOS技术难点iOS开发

iOS-九宫格密码解锁

2016-07-10  本文已影响3402人  麦穗0615

前言:看了几篇简书,九宫格密码解锁,看着不错,拿来学习一下。

一、实现效果
实现效果
二、手势解锁实现过程
分析:
#1.监听手指在view上的移动,首先肯定需要自定义一个view,重写touch began,touch move等方法,
  当手指移动到圈上时,让其变亮。可以通过button按钮来实现。
#2.界面搭建--【九宫格】代码的方式创建9个按钮
         1).背景图片
         2).九个按钮
            (把九个按钮作为一个整体,使用一个大的view来管理这些小的view,这些小的view就是9个button)。
         3).新建一个类,对自定义的view进行管理,这个view是从storyboard创建出来的。
          会调用aweakFrameNib方法和layoutSubviews方法,前者创造控件,后者,设置按钮frame。
         4).监听手指的移动。分析程序,应该监听手指的移动,而不是按钮的点击,当手指移动到按钮的范围内时,让按钮变亮。
           (1)重写touchesbegan...方法
               1.获取按下的点
               2.判断触摸的位置是否在按钮的范围内(使用for循环)
                提示: 一个判断点是否在指定范围内的方法——CGRectContainsPoint(,);
             (2)重新touchesmoved...方法
                 说明:当手指移动到按钮上的时候,按钮变亮,因此需要重写touchesmoved方法。
                1.获取触摸的点
                2.判断触摸的点是否在按钮的范围内。
              提示:可以把上面两个功能分别进行封装,在使用的时候直接调用即可。
#3绘制线段
  思路:获取为选中状态的按钮,并把它们存到一个数组中,重写drawRect方法,从数组中取出所有的按钮,连接所有按钮的中点。
  注意:数组中不能存空值,在存储之前需要先进行判断。
  新的问题:已经被连过的按钮,不能再连线。(在存储按钮的时候判断,如果该按钮已经被连线,那么就不再添加到数组中)。
  绘制线段
         1.获取上下文
         2.取出按钮(起点和终点)
         3.渲染

如图所示:

①设置控制器view背景图片
设置控制器view背景图片
②自定义view并与控制器中新拖入的view进行关联
自定义view并与控制器中新拖入的view进行关联
③搭建UI
控件布局
设置触摸点,实现两个代理
④创建存储选中按钮的数组,并把选中按钮添加其中,画线重绘
图4.1
图4.2
④验证密码

解析:对与验证密码这块,基本的思路是根据选中按钮的tag值,来验证用户设置的手势密码是否与之对等。换句话来说,我们添加在自定义view的按钮,当每个按钮被触碰时,都会变成高亮状态,被添加到高亮状态的数组中。手势密码也就相当于(0~9)的密码串排序。手势密码验证是在,触摸结束后验证的。所以我们要想验证密码,必须在touchend方法里遍历高亮数组获取按钮的tag值。并存入可变字符串数组中,与自己设置的手势密码字符串进行对比。

设置按钮的tag值
密码验证正确:按钮高亮状态消失线消失
不正确:按钮红色,线消失:按钮状态消失
密码验证1
要想线消失
高亮状态消失线消失
验证
  • 知识点补充

1.九宫格实现原理
界面是一个九宫格的布局.九宫格实现思路.
1.先确定有多少列 cloum = 3;
2.计算出每列之间的距离
2.1计算为: CGFloat margin = (当前View的宽度 - 列数 * 按钮的宽度) / (总列数 - 1)
3.每一列的X的值与它当前所在的列有关
3.1列号:curColum = i % cloum
4.每一行的Y的值与它当前所在的行有关
4.1行号:curRow = i / cloum
5.每一个按钮的X值为, margin + 当前所在的列 * (按钮的宽度+ 每个按钮之间的间距)
6.每一个按钮的Y值为 当前所在的行 * (按钮的宽度 + 每个按钮之间的距离)

上一篇 下一篇

猜你喜欢

热点阅读