【问题标题】:How to not stroke() every UIBezierPath in array如何不描边()数组中的每个 UIBezierPath
【发布时间】:2017-04-06 15:11:10
【问题描述】:

我正在开发一个手写应用程序,我正在使用三个不同的 UIBezierPath 变量:

  • [paths] - UIBezierPath 的数组
  • temporaryPath - 帮助平滑
  • realPath - 最终将添加到“路径”数组中的路径

我使用的是一组路径而不是单个路径,因为我有一个平移工具可以在屏幕上移动线条 - 所以它们需要是单独的实体。问题是每次调用 draw(:_) 时我都必须重绘整个数组:

override func draw(_ rect: CGRect) {
    strokeColor.setStroke()

    for path in paths{
        path.stroke()
    }

    realPath?.stroke()
    temporaryPath?.stroke()
}

这会在绘制大约 20 条路径后产生性能问题。每次调用 draw(:_) 时不重绘整个数组有什么解决办法吗?

【问题讨论】:

    标签: uiview drawing uibezierpath cgpath setneedsdisplay


    【解决方案1】:

    我得出结论,仅将我正在绘制的路径的矩形传递给 setNeedsDisplay(),并结合仅在 touchesEnded(_:) 时绘制数组中的线条的条件,是一个好的解决方案。但是,其他具有类似功能的应用显然不会这样做,所以我认为有更好的解决方案。

        override func draw(_ rect: CGRect) {
        strokeColor.setStroke()
        realPath?.stroke()
        if yesnewline == true{
            for path in paths{
                path.stroke()
            }
            yesnewline=false
        }
    
        temporaryPath?.stroke()
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多