让动画等待1秒 - Objective-c

时间:2013-05-13 13:16:26

标签: objective-c cocoa-touch

我正在开发一款带有6个UIButton的记忆游戏,当它们被触摸时会改变背景图像。我检查两个录音带是否与布尔相同。我有6个不同,每个按钮动作设置为YES。

如果第一个BOOL不等于第二个BOOL,那么它们应该改回原来的背景图像。我的问题是,当直接点击第二个按钮时,两个按钮会发生变化。我希望在更改之前看到第二个按钮的图像。这是我的代码:

- (void)buttonClicked:(id)sender
{
buttonClickedBOOL = YES;

[animation stuff....]
if (randomNumberi == 0)
{
    [button setBackgroundImage:[UIImage imageNamed:@"apple.png"] forState:UIControlStateNormal];
}
else if (randomNumberi == 1)
{
    [button setBackgroundImage:[UIImage imageNamed:@"windows_logo.png"] forState:UIControlStateNormal];
}
else if (randomNumberi == 2)
{
    [button setBackgroundImage:[UIImage imageNamed:@"fujitsu.png"] forState:UIControlStateNormal];
}
[UIView commitAnimations];

[self gameCheck];
}

这是我检查条件的地方:

- (void)gameCheck
{
if ((buttonClickedBOOL == YES) && (button2ClickedBOOL == YES))
{
    button.enabled = NO;
    button2.enabled = NO;
    button3.enabled = NO;
    button4.enabled = NO;
    button5.enabled = NO;
    button6.enabled = NO;

    if (randomNumberi == randomNumberi2)
    {
        NSLog(@"The same");
    }
    else
    {
        [animations stuff....]
        [button setBackgroundImage:nil forState:UIControlStateNormal];
        [UIView commitAnimations];

        [animations stuff....]
        [button2 setBackgroundImage:nil forState:UIControlStateNormal];
        [UIView commitAnimations];
    }

}

随机变量在viewDidLoad中设置为int数0-3,表示应该设置哪些图像。

2 个答案:

答案 0 :(得分:1)

来自UIView class reference

使用方法animateWithDuration:delay:options:animations:completion:

此方法采用延迟参数。它还使用块来表示动画和完成处理程序。这非常有用。

答案 1 :(得分:1)

使用不同的方法定义动画代码,并按以下方式调用:

[self performSelector:@selector(yourAnimatingMethod) withObject:nil afterDelay:1.0];