viewWithTag可以使用有限的时间

时间:2013-09-09 05:01:56

标签: ios objective-c

我有3个UIImageView作为缩略图,带有标签:1,2,3。

以下方法:

- (IBAction)showImage:(UIGestureRecognizer *)sender
{
  if (sender.view.layer.borderColor != [UIColor redColor].CGColor)
    {
      sender.view.layer.borderColor = [UIColor redColor].CGColor;
      UIImageView *showFullImage = (UIImageView *)[self.view viewWithTag:sender+10];
      [self.view addSubview:showFullImage];
      showFullImage setTag:sender+20;
      showFullImage.hidden = NO;
    }
  else
    {
      sender.view.layer.borderColor = [UIColor whiteColor].CGColor;
      UIImageView *hideFullImage = (UIImageView *)[self.view viewWithTag:sender+20];
      [hideFullImage removeFromSuperView];
      hideFullImage.hidden = YES;
    }

所以,正如你所看到的,我有3个UIImageView小缩略图,带有whiteBorderColor。 此外,我创建并添加到superView另外3个图像全尺寸,相同的帧和以下标签:11,12,13也隐藏了这些图像。

现在,我使用上面的代码来实现这个想法:

当我触摸其中一个缩略图时,borderColor将为红色,而隐藏的全尺寸图像(tag = thumbnail.tag + 10)将是可见的。如果我再次按相同的缩略图图像,现在有红色borderColor,将隐藏全尺寸图像,边框将为白色。

代码有效,但我的问题是:我只能显示和隐藏每个全尺寸图像两次。

想法是,如果UIButton处于压力和正常状态,那么缩略图应该起作用。

我不想使用UIButtons。

由于

2 个答案:

答案 0 :(得分:1)

听起来您忘了重置图片,请尝试以下操作:

UIImageView *hideFullImage = (UIImageView *)[self.view viewWithTag:sender+20];
[hideFullImage removeFromSuperView];
[hideFullImage setTag:sender+10];
hideFullImage.hidden = YES;

答案 1 :(得分:1)

如果我理解真的,你不能写下面的行。

[self.view addSubview:showFullImage];

[hideFullImage removeFromSuperView];

你也可以在隐藏后重置标签。

[hideFullImage setTag:sender+10];

在调用showImage之前添加视图并隐藏。