Подтвердить что ты не робот

Как использовать анимированный .gif в приложении для iPhone?

У меня есть анимированный gif файл, который я хочу использовать в своем приложении для iPhone, но анимация не работает. Кто-нибудь знает, как это исправить?

4b9b3361

Ответ 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.