Ios 如何使用UIView绘制线?

Ios 如何使用UIView绘制线?,ios,swift,Ios,Swift,我可以使用CGContext绘制线条。如何使用UIView绘制具有相同坐标的直线?我想在将来移动线,所以我需要使用UIView func DrawLine() { UIGraphicsBeginImageContext(self.view.frame.size) imageView.image?.draw(in: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))

我可以使用CGContext绘制线条。如何使用UIView绘制具有相同坐标的直线?我想在将来移动线,所以我需要使用UIView

func DrawLine()
{
    UIGraphicsBeginImageContext(self.view.frame.size)
    imageView.image?.draw(in: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))
    let context = UIGraphicsGetCurrentContext()

    let lineWidth : CGFloat = 5

    context?.move(to: CGPoint(x: 100, y: 100))
    context?.addLine(to: CGPoint(x: self.view.frame.width - 100, y: 100))
    context?.setBlendMode(CGBlendMode.normal)
    context?.setLineCap(CGLineCap.round)
    context?.setLineWidth(lineWidth)
    context?.setStrokeColor(UIColor(red: 0, green: 0, blue: 0, alpha: 1.0).cgColor)
    context?.strokePath()

    context?.move(to: CGPoint(x: self.view.frame.width/2, y: 100))
    context?.addLine(to: CGPoint(x: self.view.frame.width/2, y: 700))
    context?.strokePath()

    imageView.image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
}
override func viewDidLoad() 
{        
    super.viewDidLoad()
    DrawLine()
}
  • CAShapeLayer
    添加到
    UIView

    let shapeLayer = CAShapeLayer()
    view.layer.addSublayer(shapeLayer)
    
  • 将shapelayer路径设置为直线

    shapeLayer.path = // some CGPath you create
    

  • 请参阅:了解如何使用线条绘制CGPath。

    您可以在覆盖的
    func draw(\urect:CGRect)中绘制该图形。
    我想移动线条。我用触摸屏。这是代码:line.frame.origin=CGPoint(x:line.frame.origin.x,y:location.y)我的线相对于手指的位置移动了大约100个像素。为什么会发生这种情况?请在新问题中添加相关代码(格式正确)。最主要的是——显示获取接触点坐标的代码。从什么角度看?如果不是正在绘制的视图,则需要平移坐标。路径坐标相对于它所在的视图