在阵列中为UIImageViews动画1秒钟

时间:2016-04-11 15:46:46

标签: ios objective-c animation uiimageview nsarray

我试图与animation进行一些UIImageView ...

我有一个NSArray包含3个UIImageView,它们已使用界面构建器在.h中连接和声明。

我还有一个音序器,它被设置为在适当的时候从NSArray调用这些图像。

目前,音序器调用NSArray中的第一张图像,根据需要在屏幕上显示图像。

但是,当调用多个图像时,图像会同时显示在屏幕上,而不是一个接一个地显示。

有没有办法为这些单独的图像分配1秒的单独时间,这样当它们被调用时,第二个,第三个图像不会显示,直到前一个图像显示1秒钟?

我希望这是有道理的,任何建议都会受到高度赞赏。

提前谢谢!

2 个答案:

答案 0 :(得分:0)

您想要使用UIImageView

animationImages属性

这将允许您向用户播放一系列图像。您只想传递要循环的图像数组。从它的声音来看,你需要在用户输入后传入一个新的数组。您可以使用NSArray的{​​{3}}方法从图像数组中传入给定范围的元素。

您还希望将subarrayWithRange:属性设置为1.0*imageCount - 其中imageCount是要循环播放的图片数量,1.0是时间要将每个图像显示在屏幕上(因为animationDuration需要持续时间)。

听起来,您不希望序列在完成后重复 - 所以您还要将animationDuration设置为1。

然后,您可以在图片视图上调用animationRepeatCount来调用图像序列。

答案 1 :(得分:0)

试试这个:

     myTimer = [NSTimer scheduledTimerWithTimeInterval:2.2 target:self selector:@selector(changeImage) userInfo:nil repeats:YES];

    -(void)changeImage
     {
      imageVw.alpha = 1.0f;
      [UIImageView animateWithDuration:1.0 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{imageVw.alpha=0.0f;} completion:^(BOOL finished){

        if (counter>=_imgArr.count)
        {
            counter =0;
        }
        imageVw.image = [UIImage imageNamed:[_imgArr objectAtIndex:counter]];
        [UIImageView animateWithDuration:1.0 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{imageVw.alpha=1.0f;} completion:^(BOOL finished){}];
    }];

    counter++;

}