关闭

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

783人阅读 评论(0) 收藏 举报
分类:

大家自己导入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 <AVFoundation/AVFoundation.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)

        {

            //输入密码成功后,让isRightyes

            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);

}



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:51926次
    • 积分:730
    • 等级:
    • 排名:千里之外
    • 原创:33篇
    • 转载:5篇
    • 译文:0篇
    • 评论:12条
    文章分类
    最新评论