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 } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
iOS11 SectionHeader 胡乱移动且滑动时出现重复内容的解决方法
这篇文章主要介绍了iOS11 SectionHeader 胡乱移动且滑动时出现重复内容的解决方法,需要的朋友可以参考下2017-11-11IOS开发 UIAlertController详解及实例代码
这篇文章主要介绍了 IOS开发 UIAlertController详解及实例代码的相关资料,需要的朋友可以参考下2016-12-12iOS中UIAlertController设置自定义标题与内容的方法
UIAlertController是iOS8推出的新概念,取代了之前的 UIAlertView和UIActionSheet(虽然现在仍可以使用,但是会有警告)。下面这篇文章主要给大家介绍了关于iOS中UIAlertController如何设置自定义标题与内容的相关资料,需要的朋友可以参考下。2017-10-10iOS ScrollView实现自动布局的方法(适用Swift 3.0 )
传说中有一个美工ios开发者在遇到这个问题的时候特意跑到苹果总部去咨询如何对scrollview进行自动布局。当然大家不用去了,下面这篇文章就来给大家介绍关于iOS ScrollView实现自动布局的方法,文中的语法同样也适用Swift 3.0 ,需要的朋友可以参考下。2017-12-12
最新评论