我如何在UIView Blink上制作4个UIImages或基于Timing移除?

时间:2013-11-28 18:39:26

标签: ios objective-c nsmutablearray

我没有或者知道代码还没有能够创建这个项目,但基本上它会像量表一样工作,我有一个带背景的UIView和一个试管图像里面的试管图像,将有4个矩形图像堆叠在彼此之上

每个人都有自己的属性。最底部,顶部和中间以及最后一个顶部。

我的问题是,如何删除基于NSTimer等的顶部,直到最后一个Bar图像被留下?

我在考虑使用NSMutableArray以这种方式保存图像:

   NSMutableArray *testTube = [[NSMutableArray alloc] initWithObjects:
                                                     [UIImage imageNamed:@"bar1"], // 0
                                                     [UIImage imageNamed:@"bar2"], // 1
                                                     [UIImage imageNamed:@"bar3"], // 2
                                                     [UIImage imageNamed:@"bar4"],nil];

但是在IBAction方法中,我做了一个:

        [testTube removeObjectAtIndex: 3];

当我点击IBAction按钮测试它是否可以成功操作bar4.png

时,它没有删除它

我哪里错了?并且对于计时器,假设在5分钟内逐个移除它们,直到没有留下任何条。

2 个答案:

答案 0 :(得分:1)

在屏幕上显示图片的内容是UIImageView(不是UIImage,因为您的问题似乎暗示了这一点)。如果您要从屏幕中删除其中一个,则可以执行以下操作之一:

[imageView removeFromSuperview];

imageView.hidden = YES;

答案 1 :(得分:0)

以下是我建议处理它的方法:

在Interface Builder中设置4个图像视图。将图像拖动到项目中,并将图像视图设置为在试管中排成一行。图像视图上有图像属性。输入每个图像的名称,图像将显示出来。使图像视图与其包含的图像大小相同,因此不会缩放或拉伸。

然后通过控制从图像视图拖动到视图控制器的标题中,为每个图像视图创建一个IBOutlets。将顶部图像视图命名为imageView1,将下一个imageView2命名为下一个imageView3,将底部命名为imageView4。

在视图控制器的标题中定义NSArray属性imageViews。在viewDidLoad方法中,添加以下行:

self.imageViews = @[imageView1, imageView2, imageView3, imageView4];

还添加一个计数器实例变量。我们称之为imageIndex;

首次显示视图控制器时,将显示所有4个图像视图。

最后,您需要开始重复的NSTimer:

将当前索引处的图像视图上的隐藏属性设置为YES。

计时器方法看起来像这样:

- (void) hideAnImageView: (NSTimer *) theTimer;
{
  self.imageViews[imageIndex].hidden = YES;
  imageIndex++;
  if (imageIndex + 1 > [self.imageViews count] 
    [theTimer invalidate];
}