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
}
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
View의 레이아웃 방법을 AutoLayout에서 따뜻한 손 계산으로 하면 성능이 9.26배로 된 이야기이 기사는 의 15 일째 기사입니다. 어제는 에서 이었습니다. 손 계산을 권하는 의도는 없고, 특수한 상황하에서 계측한 내용입니다 화면 높이의 10 배 정도의 contentView가있는 UIScrollView 레이아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.