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
 }
}

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

相关文章

  • XCODE Debug模式资料整理

    XCODE Debug模式资料整理

    这篇文章主要介绍了XCODE Debug模式资料整理的相关资料,开发APP应用肯定会用到Debug来调试程序,这里就细致的讲解下debug资料,需要的朋友可以参考下
    2016-11-11
  • iOS App之间的通信 local socket

    iOS App之间的通信 local socket

    这篇文章主要介绍了iOS App之间的通信 local socket的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • iOS开发探索多线程GCD常用函数

    iOS开发探索多线程GCD常用函数

    这篇文章主要为大家介绍了iOS开发探索多线程GCD常用函数的使用示例介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • React Native搭建iOS开发环境

    React Native搭建iOS开发环境

    React Native的门槛不管是对于前端开发者还是移动端开发者来说都是很高的,既要懂原生又要懂js,技术栈是相当长的。但是没有关系,下面我们一步步来学习,慢慢成长吧!
    2016-09-09
  • iOS获取当前设备WiFi信息的方法

    iOS获取当前设备WiFi信息的方法

    很多公司现在都在做免费WIFI,车站、公交、地铁、餐厅,只要是人员密集流动的地方就有WIFI,免费WIFI从最初的网页认证方式也逐渐向客户端认证方式偏移。本文主要介绍iOS获取当前设备WiFi信息的方法,有需要的可以参考借鉴。
    2016-09-09
  • iOS应用开发中的文字选中操作控件UITextView用法讲解

    iOS应用开发中的文字选中操作控件UITextView用法讲解

    这篇文章主要介绍了iOS应用开发中的文字选中操作控件UITextView用法讲解,代码基于传统的Objective-C语言,需要的朋友可以参考下
    2016-02-02
  • iOS使用fastlane实现持续集成的方法教程

    iOS使用fastlane实现持续集成的方法教程

    这篇文章主要给大家介绍了关于iOS使用fastlane如何实现持续集成的相关资料,文中通过示例代码介绍的非常详细,对各位iOS开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • iOS开发中对于摄像头的一些基本使用方法分享

    iOS开发中对于摄像头的一些基本使用方法分享

    这篇文章主要介绍了iOS开发中对于摄像头的一些基本使用方法分享,包括判断摄像头是否可用的方法,需要的朋友可以参考下
    2015-10-10
  • iOS中解决Xcode 8控制台乱码的方式

    iOS中解决Xcode 8控制台乱码的方式

    这篇文章给大家介绍了iOS中解决Xcode 8控制台乱码的方式,文中给出了详细解决步骤,相信对大家的理解和学习很有帮助,有需要的朋友们下面来一起看看吧。
    2016-10-10
  • iOS开发技巧之自定义相机

    iOS开发技巧之自定义相机

    这篇文章主要为大家详细介绍了iOS开发技巧之自定义相机,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04

最新评论