【问题标题】:identifying the tag of a UIImageView识别 UIImageView 的标签
【发布时间】:2012-05-04 20:06:35
【问题描述】:

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

【问题讨论】:

  • 您已经有了触摸起源的图像视图,那么您还想识别什么?你到底想达到什么目的?
  • 那你已经成功了,因为你有视图。如果通过选择你的意思是给它一个边框或阴影或其他东西,那么只需在你的视图对象上这样做。您甚至可以将视图存储到 currentSelection 变量或类似的东西。

标签: objective-c xcode


【解决方案1】:

对于 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】:

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

    【讨论】:

    • 所以看我是否理解,您只是想查看所选 UIImage 的标签,对吗?如果是这种情况,为什么不尝试使用 NSLog(@"tag: %d",tagCount); ?
    【解决方案3】:

    您绝对不想仅仅为了检查一个数值而创建 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;
    

    【讨论】:

      猜你喜欢
      • 2013-08-08
      • 1970-01-01
      • 2021-12-21
      • 2015-12-26
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 2017-02-09
      • 2013-05-08
      相关资源
      最近更新 更多