2012-05-04 78 views
0

在我的應用程序中,用戶可以編程創建多個UIImageView,並將標籤成功分配給所有ImageView。然後,我通過以下方式檢測(在這種情況下通過觸摸移動)圖像的標籤,並根據標籤更改顏色。識別UIImageView的標籤

int touchedtag = touch.view.tag; 

    NSUInteger tagCount = touchedtag; 
    switch (tagCount) { 
     case 1: 
      image1.backgroundColor = [UIColor redColor]; 
      break; 
     case 2: 
      image1.backgroundColor = [UIColor yellowColor]; 
      break; 
     case 3: 
      image1.backgroundColor = [UIColor brownColor]; 
      break; 
     case 4: 
      image1.backgroundColor = [UIColor blackColor]; 

      break; 
     default : 

      break; 

    } 

正如你可以看到有4種情況。但是,如果用戶創建50個UIImageView,我是否需要創建50個案例,或者可以使用較少的代碼來完成此識別過程? (考慮到顏色的變化是如何起作用的,但是那麼這將僅用於識別標籤)

+0

您已經擁有了imageview觸摸的起源,那麼您還試圖識別哪些內容?你最終想達到什麼目的? –

+0

我想選擇它 – Alessandro

+0

然後,您已經成功了,因爲您擁有該視圖。如果通過選擇你的意思是給它一個邊界或陰影或其他東西,那麼只需在你的視圖對象上進行。你甚至可以將視圖存儲到currentSelection變量或類似的東西。 –

回答

0

對於50個不同的UIImageView標籤,你也可以編程定義你的標籤。

for(int i = 0 ;i < 50;i++) 
{ 
    UIImageView *yourIMG = [[UIImageView alloc] init]; 
    yourIMG.tag = i; 
} 

和開關的情況下他們與他們的標籤

對於50種不同的顏色,您可以自定義顏色UIImageView像這樣

[UIColor colorWithRed:225 green:225 blue:225 alpha:1]; 

嘗試RGB參數使用for循環可編程調整這些參數如增加紅色2個單位或減少藍色每個圖像10個單位

希望它可以幫助你!

0

那麼,如果你只使用1種顏色,它會更容易,但如果你想要50種不同的顏色,是的,你需要創建50個案例。

+0

不,我特別說我不關心顏色 – Alessandro

+0

因此,看看我是否明白,你只是想看到選定的UIImage的標籤,對吧?如果是這種情況,你爲什麼不嘗試使用NSLog(@「tag:%d」,tagCount); ? – marcos1490

0

你肯定不想創建50個案例來檢查一個數字值,或者根本就不是這樣。你打算如何處理標籤值?指定任意顏色?

無論哪種方式,這裏是您的示例代碼的複製,而不使用case語句。

NSArray *colors = [[NSArray alloc] initWithObjects:[UIColor redColor], [UIColor yellowColor], [UIColor brownColor], [UIColor blackColor], nil]; 

NSUInteger touchedtag = touch.view.tag; 
image1.backgroundColor = [colors objectAtIndex:touchedtag]; 

當然,如果您的標籤大於數組中的數字顏色,您將遇到問題。您可以使用其他邏輯解決問題,或者通過將第二行更改爲:

NSUInteger touchedtag = touch.view.tag % colors.count;