最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS實現(xiàn)電子簽名

 更新時間:2020年10月20日 16:47:55   作者:CuiXg  
這篇文章主要為大家詳細介紹了iOS實現(xiàn)電子簽名,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了iOS實現(xiàn)電子簽名的具體代碼,供大家參考,具體內(nèi)容如下

實現(xiàn)原理

1、使用拖動手勢記錄獲取用戶簽名路徑.
2、當用戶初次接觸屏幕,生成一個新的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) {
 // 獲取當前點
 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)文章

  • XCODE Debug模式資料整理

    XCODE Debug模式資料整理

    這篇文章主要介紹了XCODE Debug模式資料整理的相關(guān)資料,開發(fā)APP應(yīng)用肯定會用到Debug來調(diào)試程序,這里就細致的講解下debug資料,需要的朋友可以參考下
    2016-11-11
  • iOS App之間的通信 local socket

    iOS App之間的通信 local socket

    這篇文章主要介紹了iOS App之間的通信 local socket的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • iOS開發(fā)探索多線程GCD常用函數(shù)

    iOS開發(fā)探索多線程GCD常用函數(shù)

    這篇文章主要為大家介紹了iOS開發(fā)探索多線程GCD常用函數(shù)的使用示例介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • React Native搭建iOS開發(fā)環(huán)境

    React Native搭建iOS開發(fā)環(huán)境

    React Native的門檻不管是對于前端開發(fā)者還是移動端開發(fā)者來說都是很高的,既要懂原生又要懂js,技術(shù)棧是相當長的。但是沒有關(guān)系,下面我們一步步來學(xué)習(xí),慢慢成長吧!
    2016-09-09
  • iOS獲取當前設(shè)備WiFi信息的方法

    iOS獲取當前設(shè)備WiFi信息的方法

    很多公司現(xiàn)在都在做免費WIFI,車站、公交、地鐵、餐廳,只要是人員密集流動的地方就有WIFI,免費WIFI從最初的網(wǎng)頁認證方式也逐漸向客戶端認證方式偏移。本文主要介紹iOS獲取當前設(shè)備WiFi信息的方法,有需要的可以參考借鑒。
    2016-09-09
  • iOS應(yīng)用開發(fā)中的文字選中操作控件UITextView用法講解

    iOS應(yīng)用開發(fā)中的文字選中操作控件UITextView用法講解

    這篇文章主要介紹了iOS應(yīng)用開發(fā)中的文字選中操作控件UITextView用法講解,代碼基于傳統(tǒng)的Objective-C語言,需要的朋友可以參考下
    2016-02-02
  • iOS使用fastlane實現(xiàn)持續(xù)集成的方法教程

    iOS使用fastlane實現(xiàn)持續(xù)集成的方法教程

    這篇文章主要給大家介紹了關(guān)于iOS使用fastlane如何實現(xiàn)持續(xù)集成的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • iOS開發(fā)中對于攝像頭的一些基本使用方法分享

    iOS開發(fā)中對于攝像頭的一些基本使用方法分享

    這篇文章主要介紹了iOS開發(fā)中對于攝像頭的一些基本使用方法分享,包括判斷攝像頭是否可用的方法,需要的朋友可以參考下
    2015-10-10
  • iOS中解決Xcode 8控制臺亂碼的方式

    iOS中解決Xcode 8控制臺亂碼的方式

    這篇文章給大家介紹了iOS中解決Xcode 8控制臺亂碼的方式,文中給出了詳細解決步驟,相信對大家的理解和學(xué)習(xí)很有幫助,有需要的朋友們下面來一起看看吧。
    2016-10-10
  • iOS開發(fā)技巧之自定義相機

    iOS開發(fā)技巧之自定義相機

    這篇文章主要為大家詳細介紹了iOS開發(fā)技巧之自定義相機,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04

最新評論

梓潼县| 读书| 墨江| 上饶市| 遵义市| 金平| 衡山县| 丹凤县| 赫章县| 安龙县| 商都县| 黄浦区| 洪雅县| 大悟县| 上虞市| 望谟县| 兰溪市| 婺源县| 永和县| 荥经县| 澄迈县| 新密市| 尉犁县| 娱乐| 河间市| 阿瓦提县| 盐津县| 哈巴河县| 遂溪县| 黔西县| 小金县| 巴里| 福海县| 淮安市| 双辽市| 望城县| 阳谷县| 临湘市| 寿光市| 安庆市| 肥乡县|