0

iOS の初心者向けの質問です。Core Graphics について学び始めたばかりですが、実際のビューにどのように統合されているのかまだわかりません。

そこで、CGLayer ref を作成し、その上にいくつかのベジエ曲線を描画してから、CGLayer を返すメソッドを用意しました。これが私の手順の非常に要約されたバージョンです:

CGContextRef ctx = UIGraphicsGetCurrentContext();
CGLayerRef layer = CGLayerCreateWithContext(ctx, CGSizeMake(300.0,300.0), NULL);
CGContextRef layerCtx = CGLayerGetContext(layer);

次に、SVG ファイルを解析して動的に生成されるベジェ フィルをいくつか追加します。

SVG が適切に解析されていることを既に確認しており、このコードhttp://ponderwell.net/2011/05/converting-svg-paths-to-objective-c-paths/を使用してパスの指示を解析しています。 (パス タグの d パラメータから) UIBezierPath オブジェクトに

だから私は塗りつぶしを作成することから始めます

CGColorRef color = [UIColor colorWithRed:red green:green blue:blue alpha:1.0].CGColor;
CGContextSetFillColorWithColor(layerCtx, color);

次に、UIBezierPath を追加します

SvgToBezier *bezier = [[SvgToBezier alloc] initFromSVGPathNodeDAttr:pathAttr rect:CGRectMake(0, 0, 300, 300)];

UIBezierPath *bezierPath = bezier.bezier;

CGContextAddPath(layerCtx, bezierPath.CGPath);
CGContextDrawPath(layerCtx, kCGPathFill);

そして最後に CGLayerRef を次のように返します

return layer;

私の質問: このレイヤー ref を取得したので、それを UIView (または描画するのに最適なオブジェクトの種類) に描画します。

最終的な目標は、レイヤーを UITableViewCell に表示することです。

また、上で説明したメソッドは、私が最初から作成したクラス (NSObject から継承) に存在します。このメソッドを使用してレイヤー参照をクラス インスタンスのプロパティに割り当てる別のメソッドがあります。

テーブルビューに接続されたView Controllerからこのインスタンスを作成します。次に、うまくいけば、「cellForRowAtIndexPath」メソッド内で UITableView セルにレイヤーを追加します。

関連情報がすべて含まれていることを願っています。ご協力いただきありがとうございます。

乾杯

4

1 に答える 1

1

簡単な答えは、描画したいビューのレイヤーを新しく作成したレイヤーに設定する必要があるということです。

[myCurrentViewController.view setLayer:newLayer];

長い答えは、ここにある優れたQuartz2Dプログラミングガイドにあります

于 2012-06-26T16:06:29.703 に答える