Как использовать анимированный .gif в приложении для iPhone? - PullRequest
20 голосов
/ 19 марта 2009

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

Ответы [ 5 ]

27 голосов
/ 25 марта 2009

Если у вас есть серия изображений, которую вы хотите анимировать, вы можете легко сделать это с помощью 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.

7 голосов
/ 28 апреля 2009

UIWebView неправильно отображает все содержимое GIF. Вам необходимо использовать UIImageView, но iPhone OS не поддерживает анимированные GIFS и отображает только первый кадр.

Итак, сначала вам нужно извлечь все остальные кадры.

Пример примерного кода здесь: http://pliep.nl/blog/2009/04/iphone_developer_decoding_an_animated_gif_image_in_objc

5 голосов
/ 31 марта 2011

Вы можете использовать источник на http://blog.stijnspijker.nl/2009/07/animated-and-transparent-gifs-for-iphone-made-easy/ Он имеет GIF-декодер, который вы можете использовать напрямую, чтобы получить решение. Я успешно использовал это. Но у него есть некоторые проблемы с прозрачностью.

3 голосов
/ 22 декабря 2012

Этого можно достичь с помощью этого кода:

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.

Я знаю, что это старая тема .. но может быть полезно для кого-то .. :) 1004 *

1 голос
/ 03 июля 2009

Еще один вариант - декодировать gif в вашем приложении, а затем «подавать кадр» на объект OpenGL. Этот способ с меньшей вероятностью исчерпает память для больших изображений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...