当前位置:编程学习 > wap >>

在iOS上增加手势锁屏、解锁功能

在一些涉及个人隐私的场景下,尤其是当移动设备包含太多私密信息时,为用户的安全考虑是有必要的。

桌面版的QQ在很多年前就考虑到用户离开电脑后隐私泄露的危险,提供了“离开电脑自动锁定”或者“闲置锁定”等类似功能,具体我也忘了。

而在iPhone版的QQ上,也提供了手势锁的功能。如下图:

 


我在上一篇博文中简单提到如何根据手指移动画线条,而这里是进一步的版本,仍然只是粗糙原型:

 

 

具体的代码实现如下:


[cpp] 
// 
//  ViewController.m 
//  GestureLock 
// 
//  Created by Jason Lee on 12-9-26. 
//  Copyright (c) 2012年 Jason Lee. All rights reserved. 
// 
 
#import "ViewController.h" 
 
#define LOCK_POINT_TAG      1000 
 
@interface ViewController () 
 
@property (nonatomic, strong) UIImageView *imageView; 
 
@property (nonatomic, assign) CGPoint lineStartPoint; 
@property (nonatomic, assign) CGPoint lineEndPoint; 
 
@property (nonatomic, strong) NSMutableArray *buttonArray; 
@property (nonatomic, strong) NSMutableArray *selectedButtons; 
 
@property (nonatomic, assign) BOOL drawFlag; 
 
@property (nonatomic, strong) UIImage *pointImage; 
@property (nonatomic, strong) UIImage *selectedImage; 
 
@end 
 
@implementation ViewController 
 
- (void)dealloc 

    [super dealloc]; 
    // 
    [_imageView release]; 
    [_buttonArray release]; 
    [_selectedButtons release]; 
    [_pointImage release]; 
    [_selectedImage release]; 

 
- (void)viewDidLoad 

    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
     
    _imageView = [[UIImageView alloc] initWithFrame:self.view.bounds]; 
    [self.view addSubview:self.imageView]; 
    self.imageView.backgroundColor = [UIColor whiteColor]; 
     
    [self createLockPoints]; 

 
- (void)didReceiveMemoryWarning 

    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 

 
#pragma mark - Trace Touch Point 
 
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 

    UITouch *touch = [touches anyObject]; 
    if (touch) { 
        for (UIButton *btn in self.buttonArray) { 
            CGPoint touchPoint = [touch locationInView:btn]; 
            if ([btn pointInside:touchPoint withEvent:nil]) { 
                self.lineStartPoint = btn.center; 
                self.drawFlag = YES; 
                 
                if (!self.selectedButtons) { 
                    self.selectedButtons = [NSMutableArray arrayWithCapacity:9]; 
                } 
                 
                [self.selectedButtons addObject:btn]; 
                [btn setImage:self.selectedImage forState:UIControlStateNormal]; 
            } 
        } 
    } 

 
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 

    UITouch *touch = [touches anyObject]; 
    if (touch && self.drawFlag) { 
        self.lineEndPoint = [touch locationInView:self.imageView]; 
         
        for (UIButton *btn in self.buttonArray) { 
            CGPoint touchPoint = [touch locationInView:btn]; 
             
            if ([btn pointInside:touchPoint withEvent:nil]) { 
                BOOL btnContained = NO; 
                 
                for (UIButton *selectedBtn in self.selectedButtons) { 
                    if (btn == selectedBtn) { 
                        btnContained = YES; 
                        break; 
                    } 
                } 
                 
                if (!btnContained) { 
                    [self.selectedButtons addObject:btn]; 
                    [btn setImage:self.selectedImage forState:UIControlStateNormal]; 
                } 
            } 
        } 
         
        self.imageView.image = [self drawUnlockLine]; <

补充:移动开发 , IOS ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,