美文网首页
swift下实现手势解锁

swift下实现手势解锁

作者: lotawei | 来源:发表于2016-12-08 20:03 被阅读104次

发散

理解手势生命周期可以实现类似 水果忍者,还有笔画的效果

  //
  //  LockGestureView.swift
  //  手势解锁swift
  //
  //  Created by lotawei on 16/12/8.
  //  Copyright © 2016年 lotawei. All rights reserved.
  //
  
  import UIKit
  import CoreGraphics
  
  
  
  class LockGestureView: UIView {
     private let   imgsize = 50
      private  var   pawd:String!
     private var   rowcount = 3
       var  back:UIImage {
          return  #imageLiteral(resourceName: "back_bg.png")
      }
      var btns: [UIButton]! = [UIButton]()

 override init(frame: CGRect) {
    super.init(frame: frame)
    backgroundColor = #colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1)
    initialview()
}
convenience init(frame: CGRect, _ row:Int,_ pwd:String!) {
    self.init(frame:frame)
    self.rowcount = row
    self.pawd = pwd
 
}
func initialview(){
    //布局
   
    let    xpadding = (Int( self.bounds.size.width) - 3 * imgsize) / 4 //  计算一个横间距
    let    ypadding =  (Int( self.bounds.size.height) - (rowcount ) * imgsize) / (rowcount + 1)
    var   x = 0
    var   y = 0
    for  i in 0  ..< rowcount * 3  {
        let   btn = UIButton()
        btn.isSelected  = false
        btn.setImage(#imageLiteral(resourceName: "gesture_node_highlighted"), for: .selected)
        btn.setImage(#imageLiteral(resourceName: "gesture_node_highlighted"), for: .highlighted)
        btn.setImage(#imageLiteral(resourceName: "gesture_node_normal"), for: .normal)
        // 并设置一个tag
         btn.tag = i
        addSubview(btn)
        btn.isUserInteractionEnabled = false
        x=xpadding*((i%3)+1)+imgsize*(i%3)
        y=ypadding*((i/rowcount)+1)+imgsize*(i/rowcount)
        btn.frame = CGRect(x: x, y: y, width: imgsize, height: imgsize)

    }
    
}
required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
    let  touch = touches.first  //
    let  point  = touch?.location(in: self)

    for    abtn in self.subviews{
        let  btn = abtn  as!  UIButton
        //表示滑动的时候这个矩形框是否包含这个点
        if btn.frame.contains(point!) {
            if btn.isSelected == false  {
                if !btns.contains(btn) {
                      btns.append(btn)
                }
     
                setNeedsDisplay()
                
            }
            btn.isSelected = true
        }
    }
}



override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {

  
    //自定义视图如果设置交互为false默认会向俯视图传递响应莲  因此  解决方式  hittest
    
    var   result = ""
    for  btn  in btns{
        
        if btn.isSelected {
            result  +=  "\(btn.tag)"
            
              print(result)
        }
        btn.isSelected = false
        
        
        
    }
  
    
    if (result == self.pawd) {
        
        
        print("解锁成功!")
        
        
    }
    self.btns.removeAll()
    
    setNeedsDisplay()
    
    
}

// 重写draw方法
override func draw(_ rect: CGRect) {
    let  cout = self.btns.count
    let   path = UIBezierPath()
    for  i in 0..<cout {
        let  point  = self.btns[i].center
        if i == 0 {
            path.move(to: point)
        }
        else{
            path.addLine(to: point)
        }
    }
    UIColor.blue.setStroke()//画笔颜色
    path.lineWidth   =  3
    path.stroke()
}
  }

相关文章

  • swift下实现手势解锁

    发散 理解手势生命周期可以实现类似 水果忍者,还有笔画的效果

  • swift实现手势解锁

    手势解锁 基本逻辑 手势解锁在应用中都很常见,手势基本的连接点一般都是9个。实现逻辑一般都不难,主要是对滑动过程中...

  • iOS实现滑动手势解锁

    修改版:http://he8090.cn/2017/06/05/swift实现手势解锁绘制/近期增加了object...

  • DrawRect绘图实现手势密码控件

    公司项目中除了之前的指纹解锁外,还有手势解锁,这就扯到了手势解锁的功能实现 其实核心就是利用touchBegin,...

  • swift手势解锁

    前言 先来一个手势解锁的例子,熟悉一下swift3.0的一些基本改变。变化很大使用过程中跌跌撞撞的,多多学习。 d...

  • Swift手势解锁,手势密码

    手势框采用底层CALayer实现,且UI和逻辑分离,UI元素的配置统一在同一个文件中,可以快捷的高度定制。 首先看...

  • iOS-九宫格密码解锁

    前言:看了几篇简书,九宫格密码解锁,看着不错,拿来学习一下。 一、实现效果 二、手势解锁实现过程 分析: 如图所示...

  • Swift版仿支付宝的手势解锁,而且提供方法进行参数修改,能解决

    GYGestureUnlock Swift版仿支付宝的手势解锁,而且提供方法进行参数修改,能解决项目开发中所有手势...

  • iOS指纹解锁和手势解锁

    iOS指纹解锁和手势解锁 iOS指纹解锁和手势解锁

  • iOS手势解锁实现

    1、界面分析 当手指在界面移动时,移动到一个按钮范围内当中,它会把按钮给成为选中的状态,并且把第一个选中的按钮当做...

网友评论

      本文标题:swift下实现手势解锁

      本文链接:https://www.haomeiwen.com/subject/uyrjmttx.html