0

これを達成するための最良の方法は何でしょうか?固定のサイズと色の線を画面に描画できるようにするメソッド(定義されていない)があるとします。この行は、画面内を移動するために、回転ジェスチャとパンジェスチャを受け入れる必要があります。サイズは変更されません。回転と移動のみが必要です。

これを行うための最良の方法は何ですか?線は、親ビューのサブビューまたはサブレイヤーにする必要がありますか?iOSで線を引く方法は何ですか?画面上の複数の行を処理する方法は?私は誰かが私をiOSグラフィックスジャングルの正しい道に導いて欲しいだけです。

4

2 に答える 2

2

まず、図面全体がどれほど複雑かを考慮する必要があります。あなたの説明から、タスクは比較的単純なように思えます。その場合は、CoreGraphicsが最適です。図面が非常に複雑な場合は、OpenGL ESとGLKitを確認する必要がありますが、OGLの使用にはかなり多くの作業が必要です。

コアグラフィックスを想定して、線の中心点、角度、長さを保存し、ジェスチャレコグナイザーを使用して角度とサイズを変更し、基本的な三角関数を使用して描画する点を計算します。ポイントをループしてview-drawRectメソッドで描画し、適切なCG関数を使用して各ポイントを描画します。[view setNeedsDisplay]またはを呼び出し[view setNeedsDisplayInRect:areaToRedraw]て再描画をトリガーします。(2番目の方法は、指定したビューの一部のみを再描画し、パフォーマンスを向上させるために使用できます)。

CoreGraphicsに関する一連のチュートリアルの最初の部分はここにあります。-「線の描画」の部分が最も関連性があります。私はこれをしていません(私はこの本の古い版を使用しまし)が、私はこのサイトから他の多くの人をフォローし、それらが非常に役立つことを発見しました

補足として、画面に複数の線がある場合は、特定の線に焦点を合わせる方法が必要になる可能性があります。簡単な方法は、ユーザーが触れた点に最も近い線の中心点を見つけることです。

于 2013-02-15T16:55:20.477 に答える
1

必要な線を描くための最良のAPIは、CoreGraphicsを使用することのようです。このコードをUIViewのdrawRectメソッド内に配置します。

/* Set the color that we want to use to draw the line */ 
[[UIColor redColor] set];
/* Get the current graphics context */ 
CGContextRef currentContext =UIGraphicsGetCurrentContext();
/* Set the width for the line */
CGContextSetLineWidth(currentContext,5.0f);
/* Start the line at this point */ 
CGContextMoveToPoint(currentContext,50.0f, 10.0f);
/* And end it at this point */ 
CGContextAddLineToPoint(currentContext,100.0f, 200.0f);
/* Use the context's current color to draw the line */
CGContextStrokePath(currentContext);

ジェスチャ認識には、UIGestureRecognizersを使用します。次の方法を使用します

- (IBAction)handleRotate:(UIRotationGestureRecognizer *)recognizer
- (IBAction)handlePinch:(UIPinchGestureRecognizer *)recognizer
- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer
于 2013-02-15T16:47:52.157 に答える