一個輕量級、面對協(xié)議編程召廷、高度自定義的 圖形解鎖/手勢解鎖 / 手勢密碼 / 圖案密碼 / 九宮格密碼
相比于其他同類三方庫有哪些優(yōu)勢:
- 完全面對協(xié)議編程凳厢,支持高度自定義網(wǎng)格視圖和連接線視圖,輕松實現(xiàn)各類不同需求竞慢;
- 默認支持多種配置效果先紫,支持大部分主流效果,引入就可以搞定需求筹煮;
- 源碼采用Swift5編寫遮精,通過泛型、枚舉、函數(shù)式編程優(yōu)化代碼本冲,具有更高的學習價值准脂;
- 后期會持續(xù)迭代,不斷添加主流效果檬洞;
Github地址
效果預覽
說明 | Gif |
---|---|
箭頭 | image
|
中間點自動連接 | image
|
小灰點 | image
|
小白點 | image
|
熒光藍 | image
|
fill白色 | image
|
陰影 | image
|
圖片 | image
|
旋轉(zhuǎn)(雞你太美) | image
|
破折線 | image
|
圖片連接線(箭頭) | image
|
圖片連接線(小魚兒) | image
|
設(shè)置密碼 | image
|
修改密碼 | image
|
驗證密碼 | image
|
使用
初始化PatternLockViewConfig
方式一:使用LockConfig
LockConfig
是默認提供的類狸膏,實現(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é)議的類
該方式可以將所有配置細節(jié)聚集到自定義類的內(nèi)部,外部只需要初始化自定義類即可广料。詳情請參考demo里面的ArrowConfig
類砾脑。這樣有個好處就是,多個地方都需要用到同樣配置的時候艾杏,只需要初始化相同的類韧衣,而不用像使用LockConfig
那樣,復制屬性配置代碼糜颠。
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
元旬。