我还没有或不知道创建这个项目的代码,但基本上它的工作原理就像一个Gauge meter,我有一个带背景的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分钟内将其逐个移除,直到没有条为止。
在屏幕上显示图像的是UIImageView
(而不是UIImage
,正如您的问题所暗示的那样)。如果你想从屏幕上删除其中一个,你可以执行以下操作之一:
[imageView removeFromSuperview];
或
imageView.hidden = YES;
以下是我建议的处理方法:
在界面生成器中设置4个图像视图。将图像拖动到项目中,并将图像视图设置为在试管中对齐。图像视图上有一个图像属性。输入每个图像的名称,图像就会显示出来。使图像视图的大小与其包含的图像相同,这样它就不会被缩放或拉伸。
然后,通过控制从图像视图拖动到视图控制器的标题中,为每个图像视图创建一个IBOutlets。将顶部的图像视图命名为imageView1,将下一个图像视图命名成imageView2,将下个图像视图名称命名为imageView 3,将底部图像视图名称为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];
}