动画图像到UIImageView

时间:2014-12-29 10:44:27

标签: ios objective-c ipad uiimageview uiviewanimation

我必须将动画图片设置为UIImageView。 请参阅我要在我的UIImageView上设置的图片的以下示例,其中包含 .GIF ,并将其转换为< strong> .PNG formate。

enter image description here

我已经尝试了很多方法来做到这一点。但没有得到预期的一个。我需要这种技术来创建自己的自定义进度条。 我将此图片分配给我的UIImageView。但这不是动画.. 如果有任何想法,请与我分享。

4 个答案:

答案 0 :(得分:4)

您无法在iOS设备中使用.gif张图片。不支持GIF动画。

您可以将.gif的每一帧添加为.png.jpg图片而不是它,您可以通过代码为其添加动画。

NSArray *animateImagesArray = [NSArray arrayWithObjects:myUIImageOne, myUIImageTwo, myUIImageThree, nil];
yourImageView.animationImages      = animateImagesArray;
yourImageView.animationDuration    = 1.0f;
yourImageView.animationRepeatCount = 0; // Repeat forever
[yourImageView startAnimating];

另一个选择是,您可以放置​​UIWebView并在其中加载gif

答案 1 :(得分:1)

对于使用扩展名为.gif的文件,您可以使用此第三方库FLAnimatedImage。这是一个很好的图书馆与演示应用程

您还可以更改一些代码,以便根据需要进行操作。 如果你有图像数组(.png或其他扩展名),你可以使用APPLE UIImageView:

NSMutableArray* animation = [[NSMutableArray alloc] init];
    for(int i = 0; i<20; i++)
    {
        [animation addObject:[UIImage imageNamed:[NSString stringWithFormat:@"image_%i",i]]];
    }

    UIImageView *player = [[UIImageView alloc] initWithFrame:CGRectMake(x, y, width, height)];
    [player setAnimationImages:animation];
    [player setAnimationRepeatCount:0]; //0 means infinite loop
    player.animationDuration = 2.f;// time for one hole loop for animation
    [self.view addSubview:player];
    [player startAnimating];//start animation
    [player stopAnimating];//stop animation

您也可以使用CAKeyframeAnimation。它可以在动画开始和结束时通知您。

UIImageView *animatedImageView = [[UIImageView alloc] init]; 
CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"contents"];
    animation.calculationMode = kCAAnimationDiscrete;
    animation.duration = 3.0f;
    animation.values = someArrayWithImages;
    animation.repeatCount = 1;
    animation.delegate = self;
    [animatedImageView.layer addAnimation:animation forKey:@"animation"];

并添加委托方法:

- (void)animationDidStart:(CAAnimation *)anim;
 - (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag;

答案 2 :(得分:0)

如果你想做动画,那么你需要拍摄一组特定效果的图像然后在for循环中运行每个图像并给出动画效果。 此外,如果你仍然想做,那么你可以使用OpenGL或cocos2d框架继续前进。

但是根据iOS标准,只需保持用户界面干净整洁的图像。

答案 3 :(得分:0)

如果我理解正确,您有gif个文件,并希望以UIImageView的形式显示为动画。

这是一个流行的GitHub库,允许这样: uiimage-from-animated-gif

使用此UIImage类别,您无需将gif文件解析为多个图像。该库负责处理gif文件中的单个图像以及为您显示的每个图像的持续时间。

NSURL *url = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"gif"];
self.myImageView.image = [UIImage animatedImageWithAnimatedGIFURL:url];