我试图与animation
进行一些UIImageView
...
我有一个NSArray
包含3个UIImageView
,它们已使用界面构建器在.h中连接和声明。
我还有一个音序器,它被设置为在适当的时候从NSArray
调用这些图像。
目前,音序器调用NSArray
中的第一张图像,根据需要在屏幕上显示图像。
但是,当调用多个图像时,图像会同时显示在屏幕上,而不是一个接一个地显示。
有没有办法为这些单独的图像分配1秒的单独时间,这样当它们被调用时,第二个,第三个图像不会显示,直到前一个图像显示1秒钟?
我希望这是有道理的,任何建议都会受到高度赞赏。
提前谢谢!
答案 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++;
}