识别UIImageView的标签

时间:2012-05-04 20:06:35

标签: objective-c xcode

在我的应用程序中,用户可以编程创建许多UIImageViews,并且标记已成功分配给所有ImageView。然后,我通过以下方式检测(在这种情况下通过触摸移动)图像的标签,并根据标签更改颜色。

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个UIImageViews,我是否需要创建50个案例,或者可以使用更少的代码来执行此识别过程? (考虑到颜色的变化是看它是否有效,但是这只会被用来识别标签)

3 个答案:

答案 0 :(得分:0)

如果你只使用1种颜色就会更容易,但如果你想要50种不同的颜色,是的你需要创造50种颜色。

答案 1 :(得分:0)

对于50个不同的UIImageView标签,您还可以编程定义您的标签。

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

并使用标签

切换它们

对于50种不同的颜色,您可以使用RGB参数自定义UIImageView的颜色

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

尝试使用for循环可编程调整这些参数,例如增加红色2个单位或减少每个图像的蓝色10个单位

希望它可以帮到你!

答案 2 :(得分: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;