iOS Swift 手勢(shì)密碼,用 GPassword 就夠了

logo

前言

目前國(guó)內(nèi)的應(yīng)用,只要涉及到支付的基本都會(huì)加上手勢(shì)密碼進(jìn)行安全驗(yàn)證,本來(lái)想找開(kāi)源實(shí)現(xiàn),發(fā)現(xiàn)已有的在實(shí)現(xiàn)、效率、擴(kuò)展都不如人意,所以結(jié)合現(xiàn)有的一些應(yīng)用的表現(xiàn)效果自己實(shí)現(xiàn)了 [GPassword] (https://github.com/hackjie/GPassword) 并且開(kāi)源。

特性

  1. 使用代理將手勢(shì)密碼圖繪制完成的密碼傳出
  2. 使用 CAShapeLayer 和 UIBezeierPath,擁有更好的性能
  3. 支持定義 33、44...的矩陣
  4. 支持多種正常和選中的樣式
  5. 使用 KeyChain 和 UserDefaults 來(lái)存儲(chǔ)相關(guān)信息

部分截圖展示

first.gif

second.gif

third.gif

要求

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

安裝

CocoaPods

pod "GPassword"

或者直接拖拽 Source 文件夾進(jìn)入你的項(xiàng)目。

使用

定義統(tǒng)一的樣式,你可以調(diào)用:

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

然后可以直接用這個(gè)文件 Box.swift 直接作為手勢(shì)密碼視圖或者將它添加到控制器上使用

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
}()

然后需要做的就是實(shí)現(xiàn)兩個(gè)代理方法,具體的業(yè)務(wù)邏輯也應(yīng)該在里面實(shí)現(xiàn):

  1. sendTouchPoint 可以從內(nèi)部發(fā)出完整的手勢(shì)密碼
  2. touchesEnded 根據(jù)類(lèi)型(設(shè)置/確認(rèn)/修改)處理具體的業(yè)務(wù)邏輯
extension PasswordViewController: EventDelegate {
    func sendTouchPoint(with tag: String) {
        password += tag
        // get complete password
    }
    
    func touchesEnded() {
        // write business logics according to type
    }
}

開(kāi)發(fā)人可以根據(jù)自己的業(yè)務(wù)邏輯實(shí)現(xiàn)具體的細(xì)節(jié),在 demo 里我已經(jīng)寫(xiě)了一個(gè)簡(jiǎn)單的例子可以直接使用參考 PasswordViewController.swift,根據(jù)自己的情況進(jìn)行調(diào)整。

最后歡迎大家使用,如果有什么問(wèn)題可以及時(shí)反饋給我,謝謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過(guò)CocoaPods安裝項(xiàng)目名稱(chēng)項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明AI閱讀 16,210評(píng)論 3 119
  • 經(jīng)過(guò)前面三節(jié),這一節(jié)準(zhǔn)備做點(diǎn)實(shí)用的,那就是柱狀圖。直接上代碼,這一節(jié)沒(méi)有什么新知識(shí),就是前面的知識(shí)運(yùn)用: 效果圖:
    尤樊容閱讀 220評(píng)論 0 1
  • 作為一個(gè)被萬(wàn)眾矚目的電影,上映3天,《復(fù)仇者聯(lián)盟3:無(wú)限戰(zhàn)爭(zhēng)》交出一份不錯(cuò)的成績(jī)單。13日零點(diǎn),漫威影業(yè)宣布,《復(fù)...
    小豆芽啊閱讀 544評(píng)論 0 3
  • chapter 1 消失的城市 “如果你來(lái)看我,請(qǐng)不要坐早晨八點(diǎn)十分到八點(diǎn)三十之間的地鐵2號(hào)線。這無(wú)關(guān)乎尊嚴(yán)...
    月澄閱讀 322評(píng)論 0 1

友情鏈接更多精彩內(nèi)容