iOS实现电子签名

 更新时间:2020年10月20日 16:47:55   作者:CuiXg  
这篇文章主要为大家详细介绍了iOS实现电子签名,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了iOS实现电子签名的具体代码,供大家参考,具体内容如下

实现原理

1、使用拖动手势记录获取用户签名路径.
2、当用户初次接触屏幕,生成一个新的UIBezierPath,并加入数组中.设置接触点为起点.在手指拖动过程中为UIBezierPath添加线条,并重新绘制,生成连续的线.
3、手指滑动中不断的重新绘制,形成签名效果.
4、签名完成,转化为UIImage保存.

class CXGSignView: UIView {

 var path: UIBezierPath?
 var pathArray: [UIBezierPath] = []

 override init(frame: CGRect) {
 super.init(frame: frame)
 self.backgroundColor = UIColor.gray
 setupSubviews()
 }


 required init?(coder aDecoder: NSCoder) {
 fatalError("init(coder:) has not been implemented")
 }


 func setupSubviews() {

 let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(panGestureRecognizerAction(_:)))
 self.addGestureRecognizer(panGestureRecognizer)

 }

 @objc func panGestureRecognizerAction(_ sender: UIPanGestureRecognizer) {
 // 获取当前点
 let currentPoint = sender.location(in: self)

 if sender.state == .began {
 self.path = UIBezierPath()
 path?.lineWidth = 2
 path?.move(to: currentPoint)
 pathArray.append(path!)
 }else if sender.state == .changed {
 path?.addLine(to: currentPoint)
 }
 self.setNeedsDisplay()
 }

 // 根据 UIBezierPath 重新绘制
 override func draw(_ rect: CGRect) {

 for path in pathArray {
 // 签名颜色
 UIColor.black.set()
 path.stroke()
 }
 }

 // 清空
 func clearSign() {
 pathArray.removeAll()
 self.setNeedsDisplay()
 }

 // 撤销
 func undoSign() {
 guard pathArray.count > 0 else {
 return
 }
 pathArray.removeLast()
 self.setNeedsDisplay()
 }

 /// 签名转化为图片
 func saveSignToImage() -> UIImage? {
 UIGraphicsBeginImageContextWithOptions(self.bounds.size, false, UIScreen.main.scale)
 guard let context = UIGraphicsGetCurrentContext() else {
 return nil
 }
 self.layer.render(in: context)
 let image = UIGraphicsGetImageFromCurrentImageContext()
 UIGraphicsEndImageContext()
 return image
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • IOS10 相册相机闪退bug解决办法

    IOS10 相册相机闪退bug解决办法

    这篇文章主要介绍了IOS10 相册相机闪退bug解决办法的相关资料,需要的朋友可以参考下
    2016-12-12
  • iOS实现类似微信和支付宝的密码输入框(UIKeyInput协议)

    iOS实现类似微信和支付宝的密码输入框(UIKeyInput协议)

    这篇文章主要介绍了iOS实现类似微信和支付宝的密码输入框,通过UIKeyInput协议为响应者提供简单的键盘输入的功,再通过CoreGraphics绘制出密码输入框,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • IOS开发自定义view方法规范示例

    IOS开发自定义view方法规范示例

    这篇文章主要为大家介绍了IOS开发自定义view方法规范示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • iOS中应用内添加指纹识别的实例代码

    iOS中应用内添加指纹识别的实例代码

    iOS8之后苹果发布了指纹识别的功能,通过touch ID来识别用户,做用户授权,主要是依赖于LocalAuthentication库,下面通过本文给大家介绍iOS中应用内添加指纹识别的实例代码,一起看看吧
    2016-12-12
  • iOS文本的多语言适配以及实践指南

    iOS文本的多语言适配以及实践指南

    项目开发中考虑到不同国家的用户,不同国家的语言,因而在APP里面做了多语言,所以下面这篇文章主要给大家介绍了关于iOS文本的多语言适配以及实践的相关资料,需要的朋友可以参考下
    2021-09-09
  • iOS利用Label实现的简单高性能标签TagView

    iOS利用Label实现的简单高性能标签TagView

    这篇文章主要给大家介绍了关于iOS利用Label实现的简单高性能标签TagView的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • IOS 绘制三角形的实例详解

    IOS 绘制三角形的实例详解

    这篇文章主要介绍了IOS 绘制三角形的实例详解的相关资料,希望通过本文大家能够实现三角形的绘制,需要的朋友可以参考下
    2017-09-09
  • iOS判断运营商类型的实现方法

    iOS判断运营商类型的实现方法

    下面小编就为大家带来一篇iOS判断运营商类型的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • iOS利用NSAttributeString实现不同颜色大小显示的方法

    iOS利用NSAttributeString实现不同颜色大小显示的方法

    这篇文章主要给大家爱介绍了关于iOS利用NSAttributeString实现不同颜色大小显示的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-06-06
  • iOS实现换肤功能的简单处理框架(附源码)

    iOS实现换肤功能的简单处理框架(附源码)

    这篇文章主要给大家介绍了关于iOS实现换肤功能的简单处理框架,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02

最新评论