2013-04-30 47 views
0

我想做形狀匹配應用程序like this如何匹配iOS中UIGestureRecognizer中的圖像形狀?

請檢查這個鏈接的第二個圖像。

請檢查this link也, 我可以拖放圖像,但我無法匹配的確切位置,無法填寫與另一個圖像。

任何想法或建議將非常受歡迎。

+0

如何給這樣的鏈接? – 2013-04-30 07:07:56

+0

你是如何嘗試過匹配位置的?你用'用另一個填充圖像'是什麼意思?你是不是簡單地疊加或替換視圖? – Wain 2013-04-30 07:09:43

+0

先生,我是新的iphone和這個項目分配給我,所以我正在尋找並從iPhone專家詢問這個。真的不知道這個項目的先生。 – 2013-04-30 07:15:39

回答

0

這有點棘手。

你是程序員,你知道哪個圖像匹配什麼形狀,可能是你需要兩個imageviews一個與形狀等與圖像..

PS:我在這裏只給一個想法。

所以可能你可以跟蹤標籤。添加手勢識別器來拖動圖像,以便您瞭解哪個形狀正在被拖動。移動時只需將形狀中心與圖像當前位置的中心進行比較。確保你比較範圍而不是確切的中心。

希望這麼多的信息可以幫助您:)

+0

謝謝aloot先生。是的,它會幫助我。現在我有想法從哪裏開始。先生,你有沒有關於這個項目的任何教程鏈接? – 2013-04-30 07:18:49

+0

我不這麼認爲,你會得到任何示例代碼。技巧將工作 – DivineDesert 2013-04-30 08:07:05

+0

先生我已根據你創建了一個演示。現在我無法理解這一行「現在移動時只需比較形狀中心與圖像當前位置的中心。」?先生,請您再提一些建議。 – 2013-04-30 09:47:57

1

//UIImageView *imageView1(與之圖像必須被匹配的空白圖像),

//UIImageView *imageView2(彩色圖像必須被匹配)

取一個NSMutableArray positionArray,現在每當你添加任何新的空白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的時候要特別小心(兩者都應該是爲SAEM相同類型的圖像)。