Swift 用UIBezierPath绘制一些圆
我想用UIBezierPath画一些圆。我得到了一组点:Swift 用UIBezierPath绘制一些圆,swift,for-loop,uibezierpath,Swift,For Loop,Uibezierpath,我想用UIBezierPath画一些圆。我得到了一组点:pointsXY=[(35.625,20.01),(71.25,60.03),(106.875100.05),(142.5140.07),(320.625180.09)] 我尝试了for loop,然后在绘图中使用.stroke(): for i in pointsXY{ pointsOnChart = UIBezierPath(arcCenter: i, radius: CGFloat(2), startAngle: CGFloa
pointsXY=[(35.625,20.01),(71.25,60.03),(106.875100.05),(142.5140.07),(320.625180.09)]
我尝试了for loop,然后在绘图中使用.stroke():
for i in pointsXY{
pointsOnChart = UIBezierPath(arcCenter: i, radius: CGFloat(2), startAngle: CGFloat(0), endAngle: CGFloat(2*Double.pi), clockwise: false)
}
override func draw(_ rect: CGRect) {
UIColor.white.set()
pointsOnChart.stroke()
}
结果是,UIView中只显示最后一个点。我不知道为什么这是一个问题,因为我用同样的方法画了线(使用.move()和.addLine()在for循环内部绘制线)
pointsChart
在每次循环时都会被替换。所以你只会得到最后一个。这很奇怪,因为我对UIBezierPath做了同样的事情,在循环中用.move和.addLline画了一条线,.stroke()工作了,但没有被替换。最简单的方法是什么?我应该创建UIBezierPath数组并在func draw中循环它吗?在pointsXY{let pointsOnChart=UIBezierPath(弧心:I,半径:CGFloat(2),startAngle:CGFloat(0),endAngle:CGFloat(2*Double.pi),顺时针:false)中覆盖func draw({UIColor.white.set()),pointsOnChart.stroke()}
?和.move()和.addLine()
这不是init
方法,它修改当前路径,而不是设置其值。@Larme这很有意义,谢谢!