iOS10 Swift 3-简单绘图画布
我正在使用Swift 3构建一个iOS应用程序,我的应用程序中有一个部分需要两个“Sign here”字段作为画布。只有一种颜色(黑色)和一个“重置”按钮 到目前为止,我已经看到,它是在旧版本的Swift上,但有人将其更新为Swift 3 我复制粘贴了iOS10 Swift 3-简单绘图画布,ios,swift,canvas,swift3,Ios,Swift,Canvas,Swift3,我正在使用Swift 3构建一个iOS应用程序,我的应用程序中有一个部分需要两个“Sign here”字段作为画布。只有一种颜色(黑色)和一个“重置”按钮 到目前为止,我已经看到,它是在旧版本的Swift上,但有人将其更新为Swift 3 我复制粘贴了ViewController.swift文件中的所有内容,但我注释掉了最后两个函数override func prepare和ViewController:SettingsViewControllerDelegate,因为我不需要它们 它按预期工作
ViewController.swift
文件中的所有内容,但我注释掉了最后两个函数override func prepare
和ViewController:SettingsViewControllerDelegate
,因为我不需要它们
它按预期工作,笔划得到保存
但是,我现在有两个问题:
detect touch -> draw on imageview
如果这是一种方法,那么如果任何触摸只会在一个图像视图上绘制,我应该如何处理两个图像视图
我认为这种方法应该是从UIView扩展一个类来覆盖draw函数。我看到一个这样的代码,但它写在旧的斯威夫特,我不知道如何翻译或更新它。我尝试使用XCode的“自动更正”功能,但遇到了一个障碍
我目前有两个问题:
明白了。我将DrawableView类转换为Swift 3 请指出,如果我做了任何错误,这将使应用程序崩溃的扩展使用w/e
class DrawableView: UIView {
let path=UIBezierPath()
var previousPoint:CGPoint
var lineWidth:CGFloat=1.0
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override init(frame: CGRect) {
previousPoint=CGPoint.zero
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
previousPoint=CGPoint.zero
super.init(coder: aDecoder)
let panGestureRecognizer=UIPanGestureRecognizer(target: self, action: #selector(pan))
panGestureRecognizer.maximumNumberOfTouches=1
self.addGestureRecognizer(panGestureRecognizer)
}
override func draw(_ rect: CGRect) {
// Drawing code
UIColor.green.setStroke()
path.stroke()
path.lineWidth=lineWidth
}
func pan(panGestureRecognizer:UIPanGestureRecognizer)->Void{
let currentPoint=panGestureRecognizer.location(in: self)
let midPoint=self.midPoint(p0: previousPoint, p1: currentPoint)
if panGestureRecognizer.state == .began{
path.move(to: currentPoint)
}
else if panGestureRecognizer.state == .changed{
path.addQuadCurve(to: midPoint,controlPoint: previousPoint)
}
previousPoint=currentPoint
self.setNeedsDisplay()
}
func midPoint(p0:CGPoint,p1:CGPoint)->CGPoint{
let x=(p0.x+p1.x)/2
let y=(p0.y+p1.y)/2
return CGPoint(x: x, y: y)
}
}