context.Path返回nil

时间:2016-11-25 22:18:02

标签: core-graphics

我有以下代码,它们引入了CALayer子类的上下文。

override func draw(in con: CGContext) {

    //  super.draw(in: con) //with/out makes no diff

      let endAng = CGFloat(Float.pi * 2) 

      con.addArc(center: position,
                 radius: 30,
                 startAngle: 0,
                 endAngle: endAng,
                 clockwise: false)
      con.setStrokeColor(UIColor.red.cgColor)
      con.setLineWidth(CGFloat(thickness / 5))
      con.strokePath()


      self.path = con.path

在最后一行中,当用户进入另一种模式时,我正在尝试保存路径以使用它进行更多绘图。但在分配后self.path == nil

文档只是说:

  

返回根据图形上下文中的当前路径信息构建的路径对象。

为什么,如果我刚刚将路径组件添加到我的CALayer子类'上下文中,那么路径获取器返回一个nil路径?这里的文档无法帮我调试。

所以,像addArc这样的所有绘图函数都表示他们将这些形状添加到当前路径中(我确实看到它们在我的图层中呈现),但在下一行查询当前上下文的路径时,它没有?

1 个答案:

答案 0 :(得分:1)

The documentation for the strokePath function说:

  

当前路径被清除为调用此函数的副作用。

在你抚摸路径之前,先将呼叫转移到con.path