How to draw a line in Swift 3

后端 未结 2 1433
迷失自我
迷失自我 2021-01-08 00:30

I would like the user to touch 2 points and then a line is drawn between those two points. Here is what I have so far:

func drawline(){
    let context = UIG         


        
2条回答
  •  有刺的猬
    2021-01-08 01:21

    Draw line in Swift 4.1

    class MyViewController: UIViewController {
    
        @IBOutlet weak var imgViewDraw: UIImageView!
    
        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 isSwiping:Bool!
    
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
    
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
    
        //MARK: Touch events
        override func touchesBegan(_ touches: Set, with event: UIEvent?) {
            isSwiping    = false
            if let touch = touches.first{
                lastPoint = touch.location(in: imgViewDraw)
            }
        }
        override func touchesMoved(_ touches: Set, with event: UIEvent?) {
    
            isSwiping = true;
            if let touch = touches.first{
                let currentPoint = touch.location(in: imgViewDraw)
                UIGraphicsBeginImageContext(self.imgViewDraw.frame.size)
                self.imgViewDraw.image?.draw(in: CGRect(x:0, y:0,width:self.imgViewDraw.frame.size.width, height:self.imgViewDraw.frame.size.height))
    
                UIGraphicsGetCurrentContext()?.move(to: CGPoint(x: lastPoint.x, y: lastPoint.y))
                UIGraphicsGetCurrentContext()?.addLine(to: CGPoint(x: currentPoint.x, y: currentPoint.y))
    
                UIGraphicsGetCurrentContext()?.setLineCap(CGLineCap.round)
                UIGraphicsGetCurrentContext()?.setLineWidth(self.brushWidth)
                UIGraphicsGetCurrentContext()?.setStrokeColor(red: red, green: green, blue: blue, alpha: 1.0)
                UIGraphicsGetCurrentContext()?.strokePath()
    
    
                self.imgViewDraw.image = UIGraphicsGetImageFromCurrentImageContext()
                UIGraphicsEndImageContext()
                lastPoint = currentPoint
            }
        }
        override func touchesEnded(_ touches: Set, with event: UIEvent?) {
            if(!isSwiping) {
                // This is a single touch, draw a point
                UIGraphicsBeginImageContext(self.imgViewDraw.frame.size)
                self.imgViewDraw.image?.draw(in: CGRect(x:0, y:0,width:self.imgViewDraw.frame.size.width, height:self.imgViewDraw.frame.size.height))
                UIGraphicsGetCurrentContext()?.setLineCap(CGLineCap.round)
                UIGraphicsGetCurrentContext()?.setLineWidth(self.brushWidth)
    
                UIGraphicsGetCurrentContext()?.move(to: CGPoint(x: lastPoint.x, y: lastPoint.y))
                UIGraphicsGetCurrentContext()?.addLine(to: CGPoint(x: lastPoint.x, y: lastPoint.y))
                UIGraphicsGetCurrentContext()?.setStrokeColor(red: red, green: green, blue: blue, alpha: 1.0)
                UIGraphicsGetCurrentContext()?.strokePath()
                self.imgViewDraw.image = UIGraphicsGetImageFromCurrentImageContext()
                UIGraphicsEndImageContext()
            }
        }
    
    
    }
    

提交回复
热议问题