0

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

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个案例,还是可以用更少的代码来做这个识别过程?(考虑到换颜色是看能不能用,但那这只会用来识别标签)

4

3 回答 3

0

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

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

并用它们的标签切换它们

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

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

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

希望对你有帮助!

于 2012-05-04T20:23:07.033 回答
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;
于 2012-05-04T20:25:16.577 回答
0

好吧,如果您只使用一种颜色会更容易,但如果您想要 50 种不同的颜色,是的,您需要创建 50 个案例。

于 2012-05-04T20:16:12.903 回答