Swift手勢密碼庫,用這一個就夠了!

一個輕量級、面對協(xié)議編程、高度自定義的 圖形解鎖/手勢解鎖 / 手勢密碼 / 圖案密碼 / 九宮格密碼

相比于其他同類三方庫有哪些優(yōu)勢:

  • 完全面對協(xié)議編程,支持高度自定義網(wǎng)格視圖連接線視圖,輕松實現(xiàn)各類不同需求;
  • 默認(rèn)支持多種配置效果,支持大部分主流效果,引入就可以搞定需求;
  • 源碼采用Swift5編寫,通過泛型、枚舉、函數(shù)式編程優(yōu)化代碼,具有更高的學(xué)習(xí)價值;
  • 后期會持續(xù)迭代,不斷添加主流效果;

Github地址

JXPatternLock

效果預(yù)覽

說明 Gif
箭頭
image
中間點自動連接
image
小灰點
image
小白點
image
熒光藍
image
fill白色
image
陰影
image
圖片
image
旋轉(zhuǎn)(雞你太美)
image
破折線
image
圖片連接線(箭頭)
image
圖片連接線(小魚兒)
image
設(shè)置密碼
image
修改密碼
image
驗證密碼
image

使用

初始化PatternLockViewConfig

方式一:使用LockConfig

LockConfig是默認(rèn)提供的類,實現(xiàn)了PatternLockViewConfig協(xié)議??梢灾苯油ㄟ^LockConfig的屬性進行自定義。

let config = LockConfig()
config.gridSize = CGSize(width: 70, height: 70)
config.matrix = Matrix(row: 3, column: 3)
config.errorDisplayDuration = 1

方式二:新建實現(xiàn)PatternLockViewConfig協(xié)議的類

該方式可以將所有配置細(xì)節(jié)聚集到自定義類的內(nèi)部,外部只需要初始化自定義類即可。詳情請參考demo里面的ArrowConfig類。這樣有個好處就是,多個地方都需要用到同樣配置的時候,只需要初始化相同的類,而不用像使用LockConfig那樣,復(fù)制屬性配置代碼。

struct ArrowConfig: PatternLockViewConfig {
    var matrix: Matrix = Matrix(row: 3, column: 3)
    var gridSize: CGSize = CGSize(width: 70, height: 70)
    var connectLine: ConnectLine?
    var autoMediumGridsConnect: Bool = false
    //其他屬性配置!只是示例,就不顯示所有配置項,影響文檔長度
}

配置GridView

config.initGridClosure = {(matrix) -> PatternLockGrid in
    let gridView = GridView()
    let outerStrokeLineWidthStatus = GridPropertyStatus<CGFloat>.init(normal: 1, connect: 2, error: 2)
    let outerStrokeColorStatus = GridPropertyStatus<UIColor>(normal: tintColor, connect: tintColor, error: .red)
    gridView.outerRoundConfig = RoundConfig(radius: 33, lineWidthStatus: outerStrokeLineWidthStatus, lineColorStatus: outerStrokeColorStatus, fillColorStatus: nil)
    let innerFillColorStatus = GridPropertyStatus<UIColor>(normal: nil, connect: tintColor, error: .red)
    gridView.innerRoundConfig = RoundConfig(radius: 10, lineWidthStatus: nil, lineColorStatus: nil, fillColorStatus: innerFillColorStatus)
    return gridView
}

配置ConnectLine

let lineView = ConnectLineView()
lineView.lineColorStatus = .init(normal: tintColor, error: .red)
lineView.triangleColorStatus = .init(normal: tintColor, error: .red)
lineView.isTriangleHidden = false
lineView.lineWidth = 3
config.connectLine = lineView

初始化PatternLockView

lockView = PatternLockView(config: config)
lockView.delegate = self
view.addSubview(lockView)

結(jié)構(gòu)

image

完全遵從面對協(xié)議開發(fā)。
PatternLockView依賴于配置協(xié)議PatternLockViewConfig。
配置協(xié)議配置網(wǎng)格協(xié)議PatternLockGrid和連接線協(xié)議ConnectLine。

Github地址

JXPatternLock

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

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

  • 站在熙熙攘攘的人群中,你也許不是那么起眼,擁有的不是那么多,但這不要緊。要緊的是:你始終循著自己的腳步,在不慌不忙...
    范zx閱讀 260評論 0 0
  • 此文假設(shè)所有人都會java的語法. 手把手創(chuàng)建項目 打開Android studio后, 選擇file-new p...
    _道友請留步_閱讀 609評論 0 1
  • 作者『麻婆碎豆腐』 主題『27天日常生活記錄』 最近網(wǎng)上發(fā)生了很多事情。 有留學(xué)女學(xué)者被殘忍殺害,女子深夜被施暴拖...
    我想學(xué)習(xí)啦閱讀 204評論 0 1
  • 小時候,學(xué)校離家遠(yuǎn),但是離父母單位比較近。父母是雙職工,在鎮(zhèn)上的紡織廠上班。每天,父母都騎著自行車載著我去學(xué)校。路...
    父母的依靠閱讀 259評論 1 1

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