一个轻量级、面对协议编程、高度自定义的 图形解锁/手势解锁 / 手势密码 / 图案密码 / 九宫格密码git
相比于其余同类三方库有哪些优点:github
说明 | 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
。学习