Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 用UIBezierPath绘制一些圆_Swift_For Loop_Uibezierpath - Fatal编程技术网

Swift 用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

我想用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: 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这很有意义,谢谢!