您的位置:首页 > 其它

利用KKGestureLockView 实现的绘制图形锁,解锁,修改锁 的demo

2015-07-08 10:14 435 查看








大家自己导入KKGestureLockView

在第一个ViewController 里面添加几个跳转按钮,下面是按钮方法

- (IBAction)setPSDBtnClick:(id)sender {



ZDViewController * vc = [[ZDViewControlleralloc]init];
vc.type =0;

[selfpresentViewController:vc
animated:TRUEcompletion:nil];
}
- (IBAction)refiyBtnClick:(id)sender {

ZDViewController * vc = [[ZDViewControlleralloc]init];
vc.type =1;

[selfpresentViewController:vc
animated:TRUEcompletion:nil];
}
- (IBAction)changePSDBtnClick:(id)sender {

ZDViewController * vc = [[ZDViewControlleralloc]init];
vc.type =2;

[selfpresentViewController:vc
animated:TRUEcompletion:nil];
}
type 这个是类型,为了告诉ZDViewController 这次是绘制图形锁,还是解锁或者是修改锁
接下来是跳转后的ZDViewController里面实现方法

#import <***Foundation/***Foundation.h>

#import "ZDViewController.h"

@interface
ZDViewController ()
{

KKGestureLockView * lockView;
int wrongTimes;//记录错误的次数
NSString * lastString;//记录上次的密码
BOOL isRight;


}

@end

@implementation ZDViewController

- (void)viewDidLoad {

[superviewDidLoad];

// Do any additional setup after loading the view.

//为图形锁设置背景图片
UIImageView * backImageView = [[UIImageViewalloc]initWithFrame:self.view.frame];
backImageView.image = [UIImageimageNamed:@"123.jpg"];
backImageView.userInteractionEnabled =TRUE;
[self.viewaddSubview:backImageView];

//设置lockview的各种基本设置

lockView = [[KKGestureLockViewalloc]initWithFrame:CGRectMake(0,0,
self.view.bounds.size.width,self.view.bounds.size.height)];

lockView.backgroundColor = [[UIColorblackColor]
colorWithAlphaComponent:0.2];

lockView.normalGestureNodeImage = [UIImageimageNamed:@"gesture_node_normal.png"];

lockView.selectedGestureNodeImage = [UIImageimageNamed:@"gesture_node_selected.png"];

lockView.lineColor = [[UIColororangeColor]
colorWithAlphaComponent:0.4
];

lockView.lineWidth =12;

lockView.delegate =self;

lockView.contentInsets =UIEdgeInsetsMake(100,20,
100,
20);
[self.viewaddSubview:lockView];



wrongTimes =
0; //错误次数

//设置密码
if(self.type ==0)
{

lockView.tipLabel.text =@"请滑动绘制密码";
}

//验证密码
if (self.type ==1)
{

lockView.tipLabel.text =@"请滑动输入密码";
}

//修改密码
if (self.type ==2)
{

lockView.tipLabel.text =@"请输入旧密码";
}

lastString =
nil;
}
- (void)gestureLockView:(KKGestureLockView *)gestureLockView didBeginWithPasscode:(NSString
*)passcode{
NSLog(@"==%@",passcode);


}

- (void)gestureLockView:(KKGestureLockView *)gestureLockView didEndWithPasscode:(NSString
*)passcode{
NSLog(@"--%@",passcode);


if(passcode.length<7)
{

//绘制小于四个点,直接返回

UIAlertView * alert = [[UIAlertViewalloc]initWithTitle:@"温馨提示"message:@"请至少绘制四个点"delegate:nilcancelButtonTitle:@"确定"otherButtonTitles:nil,nil];
[alertshow];
return;
}

//设置密码
if(self.type ==0)
{



if (lastString)//存在,代表第二次输入
{
if ([lastStringisEqualToString: passcode])
{

UIAlertView * alert = [[UIAlertViewalloc]initWithTitle:@"温馨提示"message:@"成功"delegate:nilcancelButtonTitle:@"确定"otherButtonTitles:nil,nil];
[alertshow];

//成功后,将lastString置空,并且将密码保存在本地
lastString =
nil;

[[NSUserDefaultsstandardUserDefaults]
setObject:passcodeforKey:@"psd"];

[[NSUserDefaultsstandardUserDefaults]
synchronize];



[selfdismissViewControllerAnimated:TRUEcompletion:nil];
}else
{

UIAlertView * alert = [[UIAlertViewalloc]initWithTitle:@"温馨提示"message:@"两次不一致"delegate:nilcancelButtonTitle:@"确定"otherButtonTitles:nil,nil];
[alertshow];
lastString =
nil;


lockView.tipLabel.text =@"请重新滑动绘制密码";

[selfshapeTheLockViewTiplabel];


return;
}
}else
{
lockView.tipLabel.text =@"请再次滑动绘制密码";
lastString = passcode;
}


}

//验证密码
if (self.type ==1)
{



if ([passcodeisEqualToString:[[NSUserDefaultsstandardUserDefaults]
objectForKey:@"psd"]])
{

UIAlertView * alert = [[UIAlertViewalloc]initWithTitle:@"温馨提示"message:@"登录成功"delegate:nilcancelButtonTitle:@"确定"otherButtonTitles:nil,nil];
[alertshow];

[selfdismissViewControllerAnimated:TRUEcompletion:nil];
}else
{
wrongTimes ++ ;
if (wrongTimes ==5) {

UIAlertView * alert = [[UIAlertViewalloc]initWithTitle:@"温馨提示"message:@"请重新登录"delegate:nilcancelButtonTitle:@"确定"otherButtonTitles:nil,nil];
[alertshow];
return;
}
NSString * textString = [NSStringstringWithFormat:@"密码不正确,还剩下%d次机会",5-wrongTimes];
lockView.tipLabel.text = textString;

[selfshapeTheLockViewTiplabel];
}
}

//修改密码
if (self.type ==2)
{


if (isRight ==FALSE)
{

//输入密码成功后,让isRight为yes

if ([passcodeisEqualToString:[[NSUserDefaultsstandardUserDefaults]
objectForKey:@"psd"]])
{
//旧密码输入成功
lockView.tipLabel.text =@"请滑动绘制新密码";
isRight =
TRUE;
}else
{
lockView.tipLabel.text =@"旧密码绘制错误";

[selfshapeTheLockViewTiplabel];
}
return;

}



if (lastString)//存在,代表第二次输入
{
if ([lastStringisEqualToString: passcode])
{

UIAlertView * alert = [[UIAlertViewalloc]initWithTitle:@"温馨提示"message:@"成功"delegate:nilcancelButtonTitle:@"确定"otherButtonTitles:nil,nil];
[alertshow];

//成功后,将lastString置空,并且将密码保存在本地
lastString =
nil;

[[NSUserDefaultsstandardUserDefaults]
setObject:passcodeforKey:@"psd"];

[[NSUserDefaultsstandardUserDefaults]
synchronize];



[selfdismissViewControllerAnimated:TRUEcompletion:nil];
}else
{

UIAlertView * alert = [[UIAlertViewalloc]initWithTitle:@"温馨提示"message:@"两次不一致"delegate:nilcancelButtonTitle:@"确定"otherButtonTitles:nil,nil];
[alertshow];
lastString =
nil;


lockView.tipLabel.text =@"请重新滑动绘制密码";

[selfshapeTheLockViewTiplabel];
return;
}
}else
{
lockView.tipLabel.text =@"请再次滑动绘制密码";
lastString = passcode;
}

}
}

//让label摇晃的动画
-(void)shapeTheLockViewTiplabel
{

CAKeyframeAnimation * shakeAnima = [CAKeyframeAnimationanimationWithKeyPath:@"transform.rotation"];

// 2.
设置动画属性

[shakeAnima setValues:@[@(12.0f*M_PI/180.0f),@(-12.0f*M_PI/180.0f),@(12.0f*M_PI/180.0f),@(0.0f*M_PI/180.0f)]];
shakeAnima.repeatCount=1;
[lockView.tipLabel.layeraddAnimation:shakeAnima
forKey:@"1"];

//让手机震动 这里是摘抄文顶顶的博客代码

NSURL *url=[[NSBundlemainBundle]URLForResource:@"glass.wav"withExtension:nil];
SystemSoundID soundID=0;

AudioServicesCreateSystemSoundID((__bridgeCFURLRef)url,
&soundID);

AudioServicesPlayAlertSound(soundID);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: