使用获取Frame的动态位置在两个UIButton之间绘制一条虚线

时间:2017-03-30 10:44:52

标签: ios swift core-graphics

您好我想从一个UIButton到另一个按钮绘制虚线。

我已经使用此代码在点之间画线:

func addDashedLine(fromPoint start: CGPoint, toPoint end:CGPoint) {
    let line = CAShapeLayer()
    let linePath = UIBezierPath()
    linePath.moveToPoint(start)
    linePath.addLineToPoint(end)
    line.path = linePath.CGPath
    line.strokeColor = UIColor.redColor().CGColor
    line.lineWidth = 1
   //line.lineJoin = kCALineJoinRound
    line.lineDashPattern = [8, 8]
    self.view.layer.addSublayer(line)
}

要获取startPoint和Endpoint我使用button.center()作为两个按钮。但是Line并没有从中心到中心。它在UIButton之外画画。我使用了Autolayout按钮,并使用乘数从superview设置约束。

请建议我怎么做。?

1 个答案:

答案 0 :(得分:0)

我的建议:

let startPoint = CGPoint(x: button1.frame.origin.x + button1.frame.size.width, y: button1.frame.origin.y + (button1.frame.size.height/2.0))
let endPoint = CGPoint(x: button2.frame.origin.x, y: button2.frame.origin.y + (button2.frame.size.height / 2.0))
addDashedLine(fromPoint start:stratrPoint, toPoint end:endPoint)

修改

但是,如果您使用的是AutoLayout,如果您使用的是StackView,则该功能不起作用