UIBezierPath线连接样式与在非常尖的角处连接的线段的行为不正确

时间:2019-02-27 08:18:36

标签: ios drawing core-graphics uibezierpath cgpath

我将我的UIBezierPath linejoinstyle设置为.round,除了当1个线段恰好回到上一个线段或线段之间的角度很小时,形成了一个尖锐的角,如下所示,效果很好

路径初始化代码:

    let path = UIBezierPath() // White path
    let testPath = UIBezierPath() // Inner red path       

    // Setup initial path
    self.path.lineWidth = 8
    self.path.lineJoinStyle = .round
    self.path.lineCapStyle = .round

    // Setup inner red path
    self.testPath.lineWidth = 1
    self.testPath.lineJoinStyle = .round
    self.testPath.lineCapStyle = .round

覆盖视图的绘制功能:

override func draw(_ rect: CGRect) {

    self.color.setStroke()
    self.path.stroke()

    self.testColor.setStroke()
    self.testPath.stroke()
}

我在touchesBegan,touchesMoved和touchesEnded重写中实现路径的构造,因为这是我正在构建的绘图工具-我正在使用addQuadCurve方法将点附加到路径中,并且未设置触摸方法中的路径。

enter image description here

如上所述,当我绘制锐利笔迹时,线连接似乎被切断。现在,根据此Stackoverflow post,此行为可能是一个错误,该错误已在iOS 7中得到解决(但根据用户向Apple提交的错误报告,该错误仅适用于iPad SDK)。

我的问题:我正在使用iOS SDK 12.1,所以这个问题是出于任何原因弹出旧错误,还是我丢失了某些东西?因为这仅在两条线段之间的角度几乎可以忽略不计时发生。我还向Apple和OpenRadar提交了一个错误报告,以防万一。

0 个答案:

没有答案