一次重复后停止动画

时间:2012-06-30 18:58:21

标签: objective-c xcode animation uiimageview

我创建了一个包含2个图像的数组,然后生成动画,一切都很完美。但是现在我希望动画在一次重复后停止,我的意思是动画将从第一个图像开始,移动到第二个图像并停止(第二个图像将保留在我的imageview上)。我该怎么做? 这是我的代码:

    UIImage *mistakeOne = [UIImage imageNamed:@"Xmark.png"];
    UIImage *mistakeOneB = [UIImage imageNamed:@"XmarkWhite.png"];
    NSMutableArray *animation = [[NSMutableArray alloc] initWithObjects:mistakeOne, mistakeOneB , nil];
    [mistakeNumberOne setAnimationImages:animation];
    mistakeNumberOne.animationDuration = 5.0;
    [mistakeNumberOne startAnimating]

谢谢!

2 个答案:

答案 0 :(得分:8)

假设wrongNumberOne是UIImageView

[mistakeNumberOne animationRepeatCount:1];

如果您想在动画之后保留图像,请在动画之前在UIImageview中设置所需的图像:

mistakeNumberOne.image = myDesiredImage;

动画结束后,它将显示图像。

全部放在一起:

 UIImage *mistakeOne = [UIImage imageNamed:@"Xmark.png"];
 UIImage *mistakeOneB = [UIImage imageNamed:@"XmarkWhite.png"];
 NSMutableArray *animation = [[NSMutableArray alloc] initWithObjects:mistakeOne, mistakeOneB , nil];
 [mistakeNumberOne setAnimationImages:animation];
 mistakeNumberOne.animationDuration = 5.0;
 [mistakeNumberOne animationRepeatCount:1];
 mistakeNumberOne.image = mistakeOneB;
 [mistakeNumberOne startAnimating];

答案 1 :(得分:2)

Pfitz的答案很适合制作动画。但是,对于这种特殊情况,你只有两个图像而你只需要在它们之间“交换”它可能更简单,只需在延迟后更改图像。

-(void)swapImage {

      [mistakeNumberOne setImage:mistakeOneB];
}

然后延迟swapImage:

[self performSelector:@selector(swapImage) withObject:nil afterDelay:5.0];

希望这会有所帮助