我正在使用手写应用程序,我正在使用三种不同的UIBezierPath变量:
我使用的是路径数组而不是单个路径,因为我有一个平移工具来移动屏幕周围的线 - 所以它们需要是独立的实体。这个问题是我每次调用draw(:_)时都必须重绘整个数组:
override func draw(_ rect: CGRect) {
strokeColor.setStroke()
for path in paths{
path.stroke()
}
realPath?.stroke()
temporaryPath?.stroke()
}
在绘制20条路径后,这会产生性能问题。有没有解决方案,每次调用draw(:_)时都不重绘整个数组?
答案 0 :(得分:0)
我计算出只通过我正在绘制的路径的矩形setNeedsDisplay(),并结合仅在touchesEnded(_ :)中绘制数组中的行的条件是一个OK解决方案。但是,具有类似功能的其他应用程序显然不会这样做,所以我认为有更好的解决方案。
override func draw(_ rect: CGRect) {
strokeColor.setStroke()
realPath?.stroke()
if yesnewline == true{
for path in paths{
path.stroke()
}
yesnewline=false
}
temporaryPath?.stroke()
}