我必须将动画图片设置为UIImageView
。
请参阅我要在我的UIImageView
上设置的图片的以下示例,其中包含 .GIF ,并将其转换为< strong> .PNG formate。
我已经尝试了很多方法来做到这一点。但没有得到预期的一个。我需要这种技术来创建自己的自定义进度条。
我将此图片分配给我的UIImageView
。但这不是动画..
如果有任何想法,请与我分享。
答案 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];