下面的代码通过覆盖触摸来绘制线条,但是在绘制时仍然存在伪像,如下图所示。
当在屏幕上进行锯齿形绘制时改变方向时,有时线会变成平坦的直角,而不是保持圆形。当在小圆圈上现场绘制时,也会出现伪影,当手指离开屏幕时,绘制点会闪烁半个圆圈,有时会留下半个圆圈和部分圆圈残留物。
伪影是断断续续的,不是完全一致或可预测的,这使得很难在代码中找到问题。它同时存在于模拟器和iOS7-iOS9的设备中。
包含两个绘制点和线的视频屏幕截图以及Xcode项目的zip文件以名为Archive.zip(23MB)https://www.dropbox.com/s/hm39rdiuk0mf578/Archive.zip?dl的文件上传到DropBox。= 0
问题:
1-在代码中,造成此点/半圆伪像的原因是什么?如何纠正?
class SmoothCurvedLinesView: UIView {
var strokeColor = UIColor.blueColor()
var lineWidth: CGFloat = 20
var snapshotImage: UIImage?
private var path: UIBezierPath?
private var temporaryPath: UIBezierPath?
private var points = [CGPoint]()
private var totalPointCount = 0
override func drawRect(rect: CGRect) {
snapshotImage?.drawInRect(rect)
strokeColor.setStroke()
path?.stroke()
temporaryPath?.stroke()
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let touch: AnyObject? = touches.first
points = [touch!.locationInView(self)]
totalPointCount = totalPointCount + 1
}
override func touchesMoved(touches: Set<UITouch>, …Run Code Online (Sandbox Code Playgroud)