У меня есть анимированный gif файл, который я хочу использовать в своем приложении для iPhone, но анимация не работает. Кто-нибудь знает, как это исправить?
Как использовать анимированный .gif в приложении для iPhone?
Ответ 1
Если у вас есть серия изображений, которые вы хотите оживить, вы можете легко сделать это с помощью UIImageView:
UIImage *blur5 = [UIImage imageNamed:@"blur5.png"];
UIImage *blur6 = [UIImage imageNamed:@"blur6.png"];
self.imageView.animationImages = [[NSArray alloc] initWithObjects:blur5, blur6, nil];
self.imageView.animationRepeatCount = 5;
[self.imageView startAnimating];
Я нашел это проще, чем пытаться использовать UIWebView.
Ответ 2
UIWebView неправильно отображает весь контент GIF. Вам нужно использовать UIImageView, но iPhone OS не поддерживает анимированные GIFS и отображает только первый кадр.
Итак, сначала нужно извлечь все остальные фреймы.
Ниже приведен пример кода примера: http://pliep.nl/blog/2009/04/iphone_developer_decoding_an_animated_gif_image_in_objc
Ответ 3
Вы можете использовать источник в http://blog.stijnspijker.nl/2009/07/animated-and-transparent-gifs-for-iphone-made-easy/ Он имеет декодер GIF, который вы можете использовать напрямую, чтобы получить решение. Я успешно его использовал. Но у него есть некоторые проблемы с прозрачностью.
Ответ 4
Это может быть достигнуто с помощью этой части кода:
NSArray * imageArray = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"1.png"], [UIImage imageNamed:@"2.png"], nil]; //this will be the frames of animation images in sequence.
ringImage = [[UIImageView alloc]initWithFrame:CGRectMake(100,200,600,600)];
ringImage.animationImages = imageArray;
ringImage.animationDuration = 1.5;//this the animating speed which you can modify
ringImage.contentMode = UIViewContentModeScaleAspectFill;
[ringImage startAnimating];//this method actually does the work of animating your frames.
Я знаю его старую нить.. но может быть полезной для кого-то..:)
Ответ 5
Еще один вариант - декодировать gif в вашем приложении, а затем "frame служить" ему на объект OpenGL. Этот способ с меньшей вероятностью исчерпает память для больших gif.