iOS實現(xiàn)電子簽名
本文實例為大家分享了iOS實現(xiàn)電子簽名的具體代碼,供大家參考,具體內(nèi)容如下
實現(xiàn)原理
1、使用拖動手勢記錄獲取用戶簽名路徑.
2、當(dāng)用戶初次接觸屏幕,生成一個新的UIBezierPath,并加入數(shù)組中.設(shè)置接觸點為起點.在手指拖動過程中為UIBezierPath添加線條,并重新繪制,生成連續(xù)的線.
3、手指滑動中不斷的重新繪制,形成簽名效果.
4、簽名完成,轉(zhuǎn)化為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) {
// 獲取當(dāng)前點
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()
}
// 根據(jù) 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()
}
/// 簽名轉(zhuǎn)化為圖片
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
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
React Native搭建iOS開發(fā)環(huán)境
React Native的門檻不管是對于前端開發(fā)者還是移動端開發(fā)者來說都是很高的,既要懂原生又要懂js,技術(shù)棧是相當(dāng)長的。但是沒有關(guān)系,下面我們一步步來學(xué)習(xí),慢慢成長吧!2016-09-09
iOS應(yīng)用開發(fā)中的文字選中操作控件UITextView用法講解
這篇文章主要介紹了iOS應(yīng)用開發(fā)中的文字選中操作控件UITextView用法講解,代碼基于傳統(tǒng)的Objective-C語言,需要的朋友可以參考下2016-02-02
iOS使用fastlane實現(xiàn)持續(xù)集成的方法教程
這篇文章主要給大家介紹了關(guān)于iOS使用fastlane如何實現(xiàn)持續(xù)集成的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04

