为什么动画后视图会消失?

时间:2014-08-07 04:18:28

标签: ios objective-c cocoa-touch animation uiimageview

我一直试图使用此代码为图像设置动画。

  - (void)viewDidLoad
{

    dice.animationImages = [NSArray arrayWithObjects:
                            [UIImage imageNamed:@"image1.png"],
                            [UIImage imageNamed:@"image2.png"],
                            [UIImage imageNamed:@"image3.png"], nil];


    [dice setAnimationRepeatCount:3];
    dice.animationDuration = 1;


    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

然后我有一个让动画播放的按钮。

-(IBAction) animate:(id)sender {

[dice startAnimating];
}

一切都很完美。动画播放3次,每次持续1秒。但是,在动画播放3次后,骰子图像视图将从屏幕上消失。如何阻止这种情况发生,以免图像消失,我可以对图像视图做其他事情?

1 个答案:

答案 0 :(得分:1)

您是否在任何地方设置了dice.image?动画与imageView包含的图像不同,并且"在"前面播放。图像然后被删除。我建议使用UIImageView' startAnimatingWithCompletionBlock方法:

- (void) viewDidload {

    dice.image = [UIImage imageNamed:@"image3.png"]; // big assumption on my part
                                                     // the assumption is that this is the image you want
                                                     // after animating

    dice.animationImages = [NSArray arrayWithObjects:
                           [UIImage imageNamed:@"image1.png"],
                           [UIImage imageNamed:@"image2.png"],
                           [UIImage imageNamed:@"image3.png"], nil];

    [dice setAnimationRepeatCount:3];
    dice.animationDuration = 1

    [super viewDidLoad];
}

A" block"是一行或多行代码,等待动画完成后再执行。如果您事先设置了图像,它将显示在"后面"它们运行时的动画可能不是你想要的。