我有一些意见,我想一一展示。我找不到如何做到这一点。相反,如果我使用以下代码,则所有视图将立即出现。

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];


有不同的论点。 starsUIImageView的数组。
任何建议都是值得欢迎的。

最佳答案

实际上,您恰好在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/

10-13 03:30