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

源码

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

(0)

相关推荐

  • iOS mobileconfig配置文件进行签名的配置方法

    配置描述文件(.mobileconfig) 是XML文件,包含设备安全策略.VPN配置信息.Wi-Fi设置.APN设置.Exchange帐户设置.邮件设置以及允许iPhone和iPod touch与企业系统配合使用的证书.本文描述了苹果开发者如何使用SSL证书对. mobileconfig进行签名,从而确保iOS系统上的app安全性. 前提条件 确保已经获取SSL数字证书.有关获取数字证书方法,可参阅如何获取数字证书. 本文使用的SSL证书文件名为mbaike.crt. 与SSL证书对应的私钥.

  • IOS 签名错误codesign failed with exit code 1解决方法

    IOS 签名错误 前日,Macbook的硬盘不幸挂了,于是将开发环境迁移到Mac Mini下.大家知道,对于Xcode来说,最麻烦的就是各种证书.ProvisioningProfile的配置问题.将原来的各种开发证书和.p12证书导入到mini上,接下来就碰到了各种莫名其妙的问题.先是无法development(可以debug),发现是证书导错了(没有用Agent证书,只有Agent可以发布).于是制作证书请求,重新下载证书. 等到部署的问题解决后,又发现无法调试--真机可以,但模拟器不行,一进

  • iOS APP签名机制原理详解

    苹果的需求 为了保证系统的安全性,所有iPhone上安装的应用必须是经过苹果授权的 安装包不需要上传到App Store也能被安装 (开发调试 企业灰度) 防止证书权限滥用:设备限制.指定APP.iCloud/PUSH/后台运行等附加权限控制 苹果的解决方案:双层代码签名+描述文件: 这里画一张图附上: 在iOS出来之前,主流的操作系统(MacOS/Windows)软件随便从哪里下载都能运行,系统安全存在隐患,盗版软件.病毒入侵.静默安装等等,苹果希望解决类似的问题,保证在iPhone iOS上

  • iOS 超级签名之描述文件的实现过程

    简介 因为最近企业签掉得太严重了,上头要求实现超级签进行游戏下载.故有了此文章,记录一下过程. 签名原理其实很简单,超级签名的技术就是使用个人开发者账号,将用户的设备当作开发设备进行应用分发.这也导致成本非常高,一个开发者账号最多只能注册一百台设备,然而一个账号的价格为99美元.不过目前超级签分发的应用稳定性很高,不用再像企业签那样经常掉签. 新建 .mobileconfig 描述文件 该描述文件用于获取用户设备的UDID,用户通过某个点击操作下载此文件,安装后服务器会收到该用户设备的 UDID

  • iOS实现电子签名

    本文实例为大家分享了iOS实现电子签名的具体代码,供大家参考,具体内容如下 实现原理 1.使用拖动手势记录获取用户签名路径. 2.当用户初次接触屏幕,生成一个新的UIBezierPath,并加入数组中.设置接触点为起点.在手指拖动过程中为UIBezierPath添加线条,并重新绘制,生成连续的线. 3.手指滑动中不断的重新绘制,形成签名效果. 4.签名完成,转化为UIImage保存. class CXGSignView: UIView { var path: UIBezierPath? var

  • jQuery实现移动端笔触canvas电子签名

    本文实例为大家分享了jQuery实现移动端笔触canvas电子签名的具体代码,供大家参考,具体内容如下 本文主要是通过jq实现电子签名,其中ios有一个坑,已修复.基于mui+vue框架实现的,如果使用此框架,稍稍改动代码即可. 1.相关代码 1.1引入jq <script src="jquery-1.11.0.min.js" type="text/javascript"></script> 1.2封装signature.js (functi

  • 微信小程序实现电子签名

    本文实例为大家分享了微信小程序实现电子签名的具体代码,供大家参考,具体内容如下 <view class="sign-contain"> <view class="signName"> <canvas id="canvas" canvas-id="canvas" class="{{ sysType === 'iOS' ? 'canvas' : 'canvas bg000'}}"

  • 微信小程序用canvas实现电子签名

    本文实例为大家分享了微信小程序用canvas实现电子签名的具体代码,供大家参考,具体内容如下 <view class="sign-contain">     <view class="signName">         <canvas id="canvas" canvas-id="canvas" class="{{ sysType === 'iOS' ? 'canvas' : 'can

  • iOS动画解析之圆球加载动画XLBallLoading的实现

    前言 当网页的页面大小较大,用户加载可能需要较长的时间,在这些情况下,我们一般会用到(加载)loading动画,提示于用户页面在加载中,本文将详细给大家介绍关于iOS圆球加载动画XLBallLoading实现的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一.显示效果 二.原理分析 1.拆解动画 从效果图来看,动画可拆解成两部分:放大动画.位移动画 放大动画 比较简单,这里主要来分析一下位移动画 (1).先去掉缩放效果: 屏蔽放大效果 (2).去掉其中的一个圆球 现

  • iOS如何固定UITableView中cell.imageView.image的图片大小

    前言 凡是进行iOS开发的,基本上都会遇到要展示列表,或者即使不是标准列表,但由于数量不固定,也需要如同列表一样从上往下显示.加载的情况.这些,都绕不过对UITableView的使用. 在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信.QQ.新浪微博等软件基本上随处都是UITableView.当然它的广泛使用自然离不开它强大的功能. 我们经常在开发过程中会用到默认UITableView的cell.imageView.image,

  • iOS中利用CAGradientLayer绘制渐变色的方法实例

    前言 以前不用自己切图,现在要自己切图,看到设计稿有好多不同规格的渐变色的背景,一个一个切的话好麻烦,没有想到iOS本来就可以实现渐变色.也就是今天的主角CAGradientLayer. 渐变色使用的类是CAGradientLayer,有两个要素,渐变颜色的起点和终点.渐变的颜色集合 简单示例: //设置渐变颜色 CAGradientLayer *gradientLayer = [CAGradientLayer layer]; gradientLayer.frame = view.bounds;

  • IOS 下获取 rootviewcontroller 的版本不同的问题解决办法

    IOS 下获取 rootviewcontroller 的版本不同的问题解决办法 一般 原生的 [[UIApplication sharedApplication].keyWindow.rootViewController presentModalViewController:self animated:NO]; 可以 获取  系统的  rootviewcontroller 但 cocos2d-x 2.1.1 在 appcontroller.mm 内定义的 加载方法是 // Set RootVie

  • iOS利用UIBezierPath + CAAnimation实现路径动画效果

    前言 上次给大家介绍了iOS利用UIBezierPath + CAAnimation实现路径动画效果的相关内容,今天实现一个根据心跳路径实现一个路径动画,让某一视图沿着路径进行运动.. 效果图如下: 核心代码 1-首先通过 drawRect 绘制心形路径 - (void)drawRect:(CGRect)rect { // Drawing code // 初始化UIBezierPath UIBezierPath *path = [UIBezierPath bezierPath]; // 首先设置

  • iOS中利用UIBezierPath + CAAnimation实现心跳动画效果

    前言 最近在开发ios项目空闲之余,决定练习下UIBezierPath进行绘图和CAAnimation动画的使用,制作了一个心跳的动画,很简单的示例,下面话不多说了,来一起看看详细的介绍: GIF示例: 核心代码 1-首先通过 drawRect 绘制心形view - (void)drawRect:(CGRect)rect { // 间距 CGFloat padding = 4.0; // 半径(小圆半径) CGFloat curveRadius = (rect.size.width - 2 *

随机推荐