2

我正在使用带有TouchCanvas(Apple Pencil 示例应用程序)的 swift 2.3,

其中在绘画时,

我可以在钢笔/铅笔/画笔/橡皮擦之间切换 - 厚度和颜色,并且相应地应用相同。

参考:Screen1_Swift2.3_vs_Swift3.0.png

现在我升级到了swift 3.0,

在哪幅画中,

当在钢笔/铅笔/画笔/橡皮擦 - 粗细和颜色之间切换时,最后选择的一个将应用于所有。

参考:Screen2_Swift2.3_vs_Swift3.0.png

并且还尝试了苹果最新的铅笔API ..结果是一样的

可以请任何人告诉我确切的解决方案..

4

1 回答 1

1

啊……经过长时间的尝试……找到了解决方案……

CanvasView.swift 上只有一行

override func draw(_ rect: CGRect) {
        let context = UIGraphicsGetCurrentContext()!

        context.setLineCap(.round)

needsFullRedraw = false //添加了这一行

        if (needsFullRedraw) {
            setFrozenImageNeedsUpdate()
            frozenContext.clear(bounds)
           for array in [finishedLines,lines] {
                for line in array {
                    line.drawCommitedPointsInContext(frozenContext, isDebuggingEnabled: isDebuggingEnabled, usePreciseLocation: usePreciseLocations)

                }

            }
            needsFullRedraw = false
        }

        frozenImage = frozenImage ?? frozenContext.makeImage()

        if let frozenImage = frozenImage {
            context.draw(frozenImage, in: bounds)
        }

     for line in lines {
            line.drawInContext(context, isDebuggingEnabled: isDebuggingEnabled, usePreciseLocation: usePreciseLocations)

        }

    }

或者只是评论了以下行

/*if (needsFullRedraw) {
                setFrozenImageNeedsUpdate()
                frozenContext.clear(bounds)
               for array in [finishedLines,lines] {
                    for line in array {
                        line.drawCommitedPointsInContext(frozenContext, isDebuggingEnabled: isDebuggingEnabled, usePreciseLocation: usePreciseLocations)

                    }

                }
                needsFullRedraw = false
            }*/
于 2017-05-25T06:45:42.370 回答