1

テニスボールと赤いマーカーの2つの画像があります。背景としてテニス ボールを作成し、テニス ボールの上のレイヤーのように前景として赤いマーカーを作成する必要があり、テニス ボールの形状に応じて赤いマーカーを調整する必要があります。ピンチとタッチのアクションでこれを達成する必要があります。

下の2枚の画像です。

画像 1:

ここに画像の説明を入力

画像 2 (レイヤー):

ここに画像の説明を入力

最終的な画像 円を調整して:

ここに画像の説明を入力

これについての初心者は良いでしょう!!

4

1 に答える 1

2

これを行うには 2 つの方法があります (ユーザー タッチの処理)。

  1. touchesBegan:withEvent:touchesMoved:withEvent:およびtouchesEnded:withEvent:メソッド。リファレンスはこちら: UIResponder - Responding to Touch Events .

  2. ジェスチャー認識機能 (標準のジェスチャー認識機能を使用するか、独自のジェスチャー認識機能を作成します)。参照はこちら: Gesture Recognizers。良いチュートリアルはこちらです。

赤い円を移動するだけで、サイズを調整する必要がない場合は、touches...メソッドを使用すると便利です。

ただし、ピンチ ジェスチャを使用して円のサイズを調整する場合は、カスタム ジェスチャ レコグナイザを作成して (同じtouches...メソッドを実装して)、タッチと移動を処理する必要があります。標準のUIPinchGestureRecognizerを使用して、ピンチ ジェスチャを処理します。

hereで述べたように、標準のUITapGestureRecognizerUIPanGestureRecognizerにはいくつかの問題があるため、カスタム ジェスチャ認識エンジンを作成する必要があります。

更新:

たとえば、UIViewController. viewControllerUIImageViewview. そしてUIView、クリアな背景で作成し、その中に赤い円を描いているかUIImageView、赤い円で別のものを追加しています(画像がある場合)。と呼びましょうredCircleView

redCircleView透明にする( )かredCircleView.alpha = 0、ユーザーが画面に触れたときに初期化できます。2番目のオプションの方が良いと思いますが、よくわかりません。

あなたUIViewControllerが実装しているtouchesBegan:withEvent:メソッドでは、redCircleView.alpha = 1this を設定または初期化していredCircleViewます。

実装ではtouchesMoved:withEvent:、使用して任意のビューでタッチの位置を取得できますUITouch:locationInView:

 (void) touchesMoved: (NSSet *)touches withEvent:(UIEvent *)event {
      UITouch *touch = [touches anyObject];
      CGPoint point = [touch locationInView:self.view];
      .
      .
      .
 }

次に、変更するかredCircleView.center(赤い円の中心が画面上の指をたどります)、または前のポイントの位置を保存し、それを現在の位置と比較してから移動できredCircleViewます。

于 2013-03-18T10:11:42.077 に答える