我有一些观点,我想逐一展示它们。我无法找到如何做到这一点。相反,如果我使用以下代码,则所有视图立即出现。
NSTimer *timer1 = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(showStar2) userInfo:nil repeats:NO];
NSTimer *timer2 = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(showStar3) userInfo:nil repeats:NO];
NSTimer *timer3 = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(showStar4) userInfo:nil repeats:NO];
NSTimer *timer4 = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(showStar5) userInfo:nil repeats:NO];
[timer1 fire];
[timer2 fire];
[timer3 fire];
[timer4 fire];
-(void)showStar2
{
[UIView beginAnimations:@"anim1" context:NULL];
[UIView setAnimationDuration:0.5];
[stars[1] setAlpha:1];
[UIView commitAnimations];
}
除了行
之外,所有showStar函数都是相同的[UIView beginAnimations:@"anim1" context:NULL];
[stars[1] setAlpha:1];
有不同的论点。 stars
是一个UIImageView
的数组。
欢迎提出任何建议。
答案 0 :(得分:1)
实际上你在2秒之后正好射击了所有的计时器。更改不同计时器的timeInterval。
相反,您可以使用会反复触发的单个NSTimer
。
在.h文件中声明NSUInteger count;
。
按如下方式启动NSTimer:
[NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(showStar:) userInfo:nil repeats:YES];
您的showStar
方法应如下所示:
-(void)showStar:(NSTimer*)timer
{
if( count > 0 )
{
[stars[count-1] setAlpha:0];
}
[UIView beginAnimations:@"anim1" context:NULL];
[UIView setAnimationDuration:0.5];
[stars[count] setAlpha:1];
[UIView commitAnimations];
count++;
if( count == 4 )
{
[timer invalidate];
count = 0;
}
}
添加了以下代码。
if( count > 0 )
{
[stars[count-1] setAlpha:0];
}
答案 1 :(得分:1)
所有的计时器都使用相同的时间延迟,这就是所有计时器一次出现的情况。另外,不要在计时器上点火,它们会自动点火。召唤火可能会让他们马上开火。
顺便提一下,您不需要使用计时器来触发动画,只需将其添加到动画中即可:
[UIView setAnimationDelay:x];
为每个视图使用不同的x。
答案 2 :(得分:0)
我会做这样的事情
- (void)firstAnimation{
[UIView animateWithDuration:2.0f animations:^{
//first animation
} completion:^(BOOL finished){
[self secondAnimation];
}];
}
可能是递归,而当前动画的标志会更清晰,但
答案 3 :(得分:0)
在我看来,你的实施是错误的。
最好在UImageView
上放置UIView
。
接下来创建一个NSArray
图片,然后加载到imageView
。
arrAnimations = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"image1.png],.....nil];
然后致电
imageView.animationImages= arrAnimations;
imageView.animationDuration=2;
[imageView startAnimating];