Swift手势密码库,用这一个就够了!

栏目: Swift · 发布时间: 7年前

内容简介:一个轻量级、面对协议编程、高度自定义的 图形解锁/手势解锁 / 手势密码 / 图案密码 / 九宫格密码相比于其他同类三方库有哪些优势:

一个轻量级、面对协议编程、高度自定义的 图形解锁/手势解锁 / 手势密码 / 图案密码 / 九宫格密码

相比于其他同类三方库有哪些优势:

  • 完全面对协议编程,支持高度自定义 网格视图 和 连接线视图 ,轻松实现各类不同需求;
  • 默认支持多种配置效果,支持大部分主流效果,引入就可以搞定需求;
  • 源码采用 Swift5 编写,通过泛型、枚举、函数式编程优化代码,具有更高的学习价值;
  • 后期会持续迭代,不断添加主流效果;

Github地址

JXPatternLock

效果预览

说明 Gif
箭头
Swift手势密码库,用这一个就够了!
中间点自动连接
Swift手势密码库,用这一个就够了!
小灰点
Swift手势密码库,用这一个就够了!
小白点
Swift手势密码库,用这一个就够了!
荧光蓝
Swift手势密码库,用这一个就够了!
fill白色
Swift手势密码库,用这一个就够了!
阴影
Swift手势密码库,用这一个就够了!
图片
Swift手势密码库,用这一个就够了!
旋转(鸡你太美)
Swift手势密码库,用这一个就够了!
破折线
Swift手势密码库,用这一个就够了!
图片连接线(箭头)
Swift手势密码库,用这一个就够了!
图片连接线(小鱼儿)
Swift手势密码库,用这一个就够了!
设置密码
Swift手势密码库,用这一个就够了!
修改密码
Swift手势密码库,用这一个就够了!
验证密码
Swift手势密码库,用这一个就够了!

使用

初始化 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)
复制代码

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

大规模Web服务开发技术

大规模Web服务开发技术

伊藤直也、田中慎司 / 李剑 / 电子工业出版社 / 2011-7 / 59.00元

Hatena是日本最大的Web服务提供商之一,它提供的服务包括关键字(类似于维基百科)、博客、相册等。《大规模Web服务开发技术》由伊藤直也、田中慎司所著,内容主要来自Hatena为学生们举行的暑期实习的课程,内容涵盖广泛,介绍了性能优化、分布式、算法、系统架构等各个方面,甚至还介绍了硬件的经济成本,是运维工程师们必不可少的参考书。书中还包括几个算法实习课题,介绍了压缩算法、全文搜索等算法的实现方......一起来看看 《大规模Web服务开发技术》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具