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

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

相比於其餘同類三方庫有哪些優點:github

  • 徹底面對協議編程,支持高度自定義網格視圖鏈接線視圖,輕鬆實現各種不一樣需求;
  • 默認支持多種配置效果,支持大部分主流效果,引入就能夠搞定需求;
  • 源碼採用Swift5編寫,經過泛型、枚舉、函數式編程優化代碼,具備更高的學習價值;
  • 後期會持續迭代,不斷添加主流效果;

Github地址

JXPatternLock編程

效果預覽

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

使用

初始化PatternLockViewConfig

方式一:使用LockConfig

LockConfig是默認提供的類,實現了PatternLockViewConfig協議。能夠直接經過LockConfig的屬性進行自定義。函數式編程

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

方式二:新建實現PatternLockViewConfig協議的類

該方式能夠將全部配置細節彙集到自定義類的內部,外部只須要初始化自定義類便可。詳情請參考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)
複製代碼

結構

徹底聽從面對協議開發。 PatternLockView依賴於配置協議PatternLockViewConfig。 配置協議配置網格協議PatternLockGrid和鏈接線協議ConnectLine學習

Github地址

JXPatternLock優化

相關文章
相關標籤/搜索