我有一些意见,我想一一展示。我找不到如何做到这一点。相反,如果我使用以下代码,则所有视图将立即出现。
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
的数组。任何建议都是值得欢迎的。
最佳答案
实际上,您恰好在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];
}
关于ios - ios动画一一,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9158816/