0

こんな形合わせアプリを作りたい。

このリンクの2番目の画像を確認してください。

このリンクも確認してください。画像をドラッグ アンド ドロップできますが、正確な位置を一致させることができず、その画像を別の画像で埋めることができません。

どんなアイデアや提案も大歓迎です。

4

2 に答える 2

1

//UIImageView *imageView1(画像を一致させる必要がある空白の画像)、

//UIImageView *imageView2(一致する必要がある色付きの画像)

positionArray を取り、NSMutableArray新しい空白の imageview (imageview1 ) を画面に追加するたびに、その追加情報を MutableArray のように追加します。

UIImageView *imageview = [[UIImageView alloc] initWithFrame:CGRectMake(10,10,100,50)];
[imageview setTag:TagValue];
[imageview setImage:[UIImage imageNamed:@"blankMonkeyShapedImage.png"]];

//Incrementing the TagValue by one each time any blank imageview is added
TagValue++; 

NSMutableDictionary *locationDic=[[NSMutableDictionary alloc] init];
[locationDic setValue:[NSNumber numberWithInt:imageview.tag] forKey:@"TagNumber"]; 
[locationDic setValue:[NSString stringWithFormat:@"Monkey~example"] forKey:@"ImageName"];
[locationDic setValue:[NSNumber numberWithFloat:imageview.frame.origin.x] forKey:@"PosX"];
[locationDic setValue:[NSNumber numberWithFloat:imageview.frame.origin.x] forKey:@"PosY"];
[locationDic setValue:[NSNumber numberWithFloat:imageview.frame.size.width] forKey:@"SizeWidth"];
[locationDic setValue:[NSNumber numberWithFloat:imageview.frame.size.height] forKey:@"SizeHeight"];

[self.view addSubview:imageview];

[positionArray addObject:locationDic];

新しい空白のイメージビューを追加するたびに、同じことを繰り返す必要があります。UIGestureRecognizerセレクターメソッドに戻る

-(void)panGestureRecognizer:(UIPanGestureRecognizer *)gesture
{
      CGPoint translation = [gesture translationInView:self.view];

      for (int i=0 ; i<[positionArray count]; i++)
      {
          NSMutableDictionary *lctionDic=[positionArray objectAtIndexPath:i];

          float posX=[[lctionDic valueFor:@"PosX"] floatValue];
          float posY=[[lctionDic valueFor:@"PosY"] floatValue];
          float SizeWidth = [[lctionDic valueFor:@"SizeWidth"] floatValue];
          float SizeHeight = [[lctionDic valueFor:@"SizeHeight"] floatValue];


          if (translation.x >= posX && translation.x <= posX+SizeWidth &&
              translation.y >= posY && translation.y <= posX+SizeHeight )
          {
              //Condition where the dragged objects position matches any previousluy placed balnk imageview.

              if(gesture.view.tag==[[lctionDic valueFor:@"TagNumber"] intValue]) 
              {
                   NSLog(@"Matched Image's Name is : %@",[lctionDic valueForKey:@"ImageName"]);
                   break;
              }
              else
                  continue;
          }
      } 
}

TagValues を空白の imageview と toBeDragged imageview に割り当てるときは、特に注意してください (どちらも同じ種類の画像の場合は同じである必要があります)。

于 2013-04-30T07:52:50.317 に答える
0

それは少しトリッキーです。

あなたはコーダーで、どの画像がどの形状に一致するかを知っています。

PS: アイデアを出しているだけです。

タグで追跡できるかもしれません。画像をドラッグするためのジェスチャ認識機能を追加すると、どの図形がドラッグされているかがわかるようになります。移動中は、形状の中心と画像の現在の位置の中心を比較するだけです。正確な中心ではなく、必ず範囲を比較してください。

この多くの情報があなたに役立つことを願っています:)

于 2013-04-30T07:11:48.380 に答える