91 votes

Afficher un GIF animé dans iOS

J'ai remarqué qu'avec iMessage, il est désormais possible d'envoyer et d'afficher des gifs animés. Cela signifie-t-il qu'Apple prend désormais en charge l'affichage des GIF animés dans une application, ou la méthode la plus simple consiste-t-elle encore à diviser l'image en cadres et à les afficher séquentiellement ? Quelle est la méthode la plus simple pour afficher un GIF animé à partir d'iOS 5.1 ?

Gracias.

142voto

Joe Masilotti Points 920

Si vous visez iOS7 et que vous avez déjà divisé l'image en cadres, vous pouvez utiliser animatedImageNamed:duration: .

Disons que vous animez une toupie. Copiez toutes vos images dans le projet et nommez-les comme suit :

  • spinner-1.png
  • spinner-2.png
  • spinner-3.png
  • etc. ,

Créez ensuite l'image via :

[UIImage animatedImageNamed:@"spinner-" duration:1.0f];

Extrait de la documentation :

Cette méthode charge une série de fichiers en ajoutant une série de nombres au nom du fichier de base fourni dans le paramètre name. Par exemple, si le paramètre name contenait "image", cette méthode tenterait de charger des tenterait de charger des images à partir de fichiers portant les noms 'image0', 'image1', etc. et ainsi de suite jusqu'à "image1024". Toutes les images incluses dans l'image image animée doivent avoir la même taille et la même échelle.

5 votes

Et si vous n'avez pas l'animation en cadres, vous pouvez ouvrir un GIF dans l'application Aperçu et faire simplement glisser les cadres. Les cadres devraient être extraits au format .tiff, et vous pouvez les voir ici : maclife.com/article/howtos/

38voto

Eric Points 1892

Je vous recommande d'utiliser le code suivant, il est beaucoup plus léger, et compatible avec les projets ARC et non-ARC, il ajoute une simple catégorie sur UIImageView :

https://github.com/mayoff/uiimage-from-animated-gif/

1 votes

Je ne le conseille pas si vous devez afficher plusieurs gifs, il est très lent.

3 votes

Utilisation trop importante de la mémoire

38voto

Raphael Schaad Points 791

FLAnimatedImage est un moteur GIF animé open source performant pour iOS :

  • Lecture simultanée de plusieurs GIF à une vitesse comparable à celle des navigateurs de bureau. aux navigateurs de bureau
  • Délais de trame variables des honneurs
  • Se comporte avec élégance sous la pression de la mémoire
  • Élimine les retards ou les blocages pendant la première boucle de lecture.
  • Interprète les délais de trame des GIF rapides de la même manière que les navigateurs modernes.

Il s'agit d'un composant bien testé que j'ai écrit pour alimenter tous les GIFs dans Flipboard .

0 votes

La propriété "current frame" est mal retournée dans ce cadre ! github.com/Flipboard/FLAnimatedImage/issues/222

16voto

cormacrelf Points 428

Essayez ceci, je ne l'ai que brièvement regardé, mais il semble faire le travail : https://github.com/arturogutierrez/Animated-GIF-iPhone

7voto

Erik Holley Points 41
#import <QuickLook/QuickLook.h>
#import "ViewController.h"

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    QLPreviewController *preview = [[QLPreviewController alloc] init];
    preview.dataSource = self;

    [self addChildViewController:preview];
    [self.view addSubview:preview.view];
}

#pragma mark - QLPreviewControllerDataSource

- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)previewController
{
    return 1;
}

- (id)previewController:(QLPreviewController *)previewController previewItemAtIndex:(NSInteger)idx
{
    NSURL *fileURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"myanimated.gif" ofType:nil]];
    return fileURL;
}

@end

0 votes

Faible utilisation de la mémoire et facile à utiliser, mais lecture de gif très lente.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X