iOS Swift 手势密码,用 GPassword 就够了

logo

前言

目前国内的应用,只要涉及到支付的基本都会加上手势密码进行安全验证,本来想找开源实现,发现已有的在实现、效率、扩展都不如人意,所以结合现有的一些应用的表现效果自己实现了 [GPassword] (https://github.com/hackjie/GPassword) 并且开源。

特性

  1. 使用代理将手势密码图绘制完成的密码传出
  2. 使用 CAShapeLayer 和 UIBezeierPath,拥有更好的性能
  3. 支持定义 33、44...的矩阵
  4. 支持多种正常和选中的样式
  5. 使用 KeyChain 和 UserDefaults 来存储相关信息

部分截图展示

first.gif

second.gif

third.gif

要求

  • iOS 8.0+
  • Xcode 9.0+
  • Swift 4.0+

安装

CocoaPods

pod "GPassword"

或者直接拖拽 Source 文件夹进入你的项目。

使用

定义统一的样式,你可以调用:

GPassword.config { (options) in
    options.connectLineStart = .border
    options.normalstyle = .innerFill
    options.isDrawTriangle = true
    options.matrixNum = 3
}

然后可以直接用这个文件 Box.swift 直接作为手势密码视图或者将它添加到控制器上使用

fileprivate lazy var passwordBox: Box = {
    let box = Box(frame: CGRect(x: 50, y: 200, width: GWidth - 2 * 50, height: 400))
    box.delegate = self
    return box
}()

然后需要做的就是实现两个代理方法,具体的业务逻辑也应该在里面实现:

  1. sendTouchPoint 可以从内部发出完整的手势密码
  2. touchesEnded 根据类型(设置/确认/修改)处理具体的业务逻辑
extension PasswordViewController: EventDelegate {
    func sendTouchPoint(with tag: String) {
        password += tag
        // get complete password
    }
    
    func touchesEnded() {
        // write business logics according to type
    }
}

开发人可以根据自己的业务逻辑实现具体的细节,在 demo 里我已经写了一个简单的例子可以直接使用参考 PasswordViewController.swift,根据自己的情况进行调整。

最后欢迎大家使用,如果有什么问题可以及时反馈给我,谢谢!

你可能感兴趣的:(iOS Swift 手势密码,用 GPassword 就够了)