我试图在UI
ImageView上绘图.使用
Swift 1.2我能够让它工作,但我不得不将它转换为swift 3.0而我无法让它工作.
它需要做的是用手指准确地绘制你在屏幕上绘制的内容.
代码没有错误,但只是没有显示任何内容.
变量;
var lastPoint = CGPoint.zero var red: CGFloat = 0.0 var green: CGFloat = 0.0 var blue: CGFloat = 0.0 var brushWidth: CGFloat = 10.0 var opacity: CGFloat = 1.0 var swiped = false
代码;
override func touchesBegan(_ touches: Set<UITouch>,with event: UIEvent?) {
swiped = false
if let touch = touches.first {
lastPoint = touch.location(in: self.view)
}
}
func drawLineFrom(fromPoint: CGPoint,toPoint: CGPoint) {
imageView.image?.draw(in: CGRect(x: 0,y: 0,width: view.frame.size.width,height: view.frame.size.height))
UIGraphicsBeginImageContext(self.imageView.bounds.size);
let context = UIGraphicsGetCurrentContext()
context?.move(to: fromPoint)
context?.addLine(to: toPoint)
context?.setLineCap(CGLineCap.round)
context?.setlinewidth(brushWidth)
context?.setstrokeColor(red: red,green: green,blue: blue,alpha: 1.0)
context?.setBlendMode(CGBlendMode.normal)
imageView.image = UIGraphicsGetimageFromCurrentimageContext()
imageView.alpha = opacity
UIGraphicsEndImageContext()
}
override func touchesMoved(_ touches: Set<UITouch>,with event: UIEvent?) {
swiped = true
if let touch = touches.first {
let currentPoint = touch.location(in: view)
drawLineFrom(fromPoint: lastPoint,toPoint: currentPoint)
lastPoint = currentPoint
}
}
override func touchesEnded(_ touches: Set<UITouch>,with event: UIEvent?) {
if !swiped {
// draw a single point
self.drawLineFrom(fromPoint: lastPoint,toPoint: lastPoint)
}
解决方法
你必须开始图像上下文:
UIGraphicsBeginImageContextWithOptions(view.bounds.size,false,0)
你还必须克服这条道路:
context?.strokePath()
您也没有绘制上一张图片:
imageView.image?.draw(in: view.bounds)
从而:
func drawLine(from fromPoint: CGPoint,to toPoint: CGPoint) {
UIGraphicsBeginImageContextWithOptions(view.bounds.size,0)
imageView.image?.draw(in: view.bounds)
let context = UIGraphicsGetCurrentContext()
context?.move(to: fromPoint)
context?.addLine(to: toPoint)
context?.setLineCap(CGLineCap.round)
context?.setlinewidth(brushWidth)
context?.setstrokeColor(red: red,alpha: 1.0)
context?.setBlendMode(CGBlendMode.normal)
context?.strokePath()
imageView.image = UIGraphicsGetimageFromCurrentimageContext()
imageView.alpha = opacity
UIGraphicsEndImageContext()
}