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