我正在getCurrentUser().getUid();
中实施一个着色应用,它使用Swift 3.0
触摸来填充着色样式。在UIBezierPath
我创建路径:
touchesBegan
并且在touchFillPath = UIBezierPath()
我为每个新点抚摸它:
touchesMoved
但这导致路径在同一区域上方多次描边,因此所选颜色不透明度会发生变化。
我需要描绘每个touchesMoved调用的路径,以允许用户在移动触摸时看到颜色区域。
如何在不多次覆盖同一区域的情况下多次描边相同的路径?
答案 0 :(得分:2)
在touchFillPath.stroke()
之后,您需要重置路径:
touchFillPath.removeAllPoints()
touchFillPath.move(to: location)
答案 1 :(得分:2)
@joeybladb我已经尝试过你的解决方案了,但它为每个触摸屏提取了一些小部分。行动。
所以为了解决这个问题,我保存了数组中触及的所有点:
pathPoints.append(NSValue(cgPoint:location))
并在调用touchFillPath.removeAllPoints()
后,我再次将所有这些点添加到路径中:
for (index, element) in (pathPoints.enumerated())! {
let point = element.cgPointValue
if index == 0 {
touchFillPath.move(to: point)
} else {
touchFillPath.addLine(to: point)
}
}
以便下次我调用touchFillPath.stroke()
时,它会触发整个路径:
touchFillPath.move(to: lastPoint)
touchFillPath.addLine(to: location)
touchFillPath.stroke()