2016-11-25 10 views
0

私はCALayerサブクラスのコンテキストに描画する次のコードを持っています。context.Path returns nil

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 

最後の行では、ユーザーが別のモードに入ったときに、より多くの描画を行うためのパスを保存しようとしています。しかしassignement後self.path == nil

ドキュメントは、単純に言う:

は、グラフィックスコンテキストの現在のパス情報から構築されたパスオブジェクトを返します。

CALayerサブクラスにパスコンポーネントを追加したばかりの場合、コンテキストはパスパスが無限パスを返すのですか?ここのドキュメントは私のデバッグには役立ちません。

したがって、すべての描画関数は、現在のパスにクエリーを実行すると次の行に移動しますが、現在のパスにこれらのシェイプを追加します?

答えて

1

The documentation for the strokePath functionは言う:

電流経路は、この関数を呼び出すの副作用としてクリアされます。

パスを移動する前に、先にcon.pathに電話をかけてください。