91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS如何實現電子簽名

發布時間:2020-10-26 18:29:43 來源:億速云 閱讀:303 作者:Leah 欄目:開發技術

這篇文章運用簡單易懂的例子給大家介紹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
 }
}

關于iOS如何實現電子簽名就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

九寨沟县| 将乐县| 绵竹市| 济宁市| 合阳县| 米泉市| 兴和县| 马边| 古交市| 疏勒县| 洛隆县| 余干县| 苏尼特右旗| 南开区| 远安县| 阳江市| 澎湖县| 林甸县| 长乐市| 泰安市| 隆化县| 山西省| 库伦旗| 调兵山市| 石狮市| 绥中县| 龙州县| 石景山区| 襄垣县| 青神县| 嘉鱼县| 沭阳县| 枣强县| 溆浦县| 五原县| 南木林县| 邓州市| 黔东| 新昌县| 芒康县| 裕民县|