2014-12-29 5 views
2

Мне нужно установить анимированный Изображение на UIImageView. см следующего примера изображений, который я хочу, чтобы на моих UIImageView, который имеет расширение .GIF и я превратил его в .PNG формиата.Анимированное изображение для UIImageView

enter image description here

Я уже пытался слишком много способов сделать это. но не получить ожидаемого. Мне нужна эта техника для создания моего собственного Progressbar. Я назначаю это изображение своим UIImageView. но это не анимация. Если у кого-нибудь есть идея, пожалуйста, поделитесь ею со мной.

+0

одна точка, это изображение уже тип анимации ... –

ответ

4

Вы не можете использовать .gif изображения на устройствах iOS. 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 в нем.

+0

Да, но я преобразовал его как ** PNG **, то мы можем использовать его.. но не доходит до моего ожидания. –

+0

это простой. но для этого метода я должен добавить много ** изображений ** в свой пакет. что увеличит размер моего приложения. и все же это будет не так гладко, как выше экрана. R, вы получаете мою фактическую проблему - @Midhun MP –

+0

@Sarat_Patel: Да, я получаю вашу проблему. Другой подход - разместить UIWebView и загрузить в него изображение gif. –

0

Если вы хотите сделать анимацию, вам нужно взять множество изображений одного конкретного эффекта, а затем запустить каждое изображение в цикле и дать эффект анимации. Также, если вы все еще хотите сделать это, вы можете использовать OpenGL или cocos2d framework для продвижения вперед.

Но согласно стандарту iOS просто держите свой пользовательский интерфейс в чистоте и плоских изображениях.

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]; 
1

Для использования файла with.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; 
+0

Обратите внимание: если вы используете 'CAKeyFrameAnimation', массив должен иметь тип' CGImage' – Husam

Смежные вопросы