objective-c - hacer - gif personalizados
Mostrar GIF animado en iOS (6)
Desde iOS 11 Photos Framework permite agregar la reproducción animada de Gifs.
La aplicación de muestra se puede descargar here
Más información sobre la reproducción animada de Gifs (a partir de 13:35 min): https://developer.apple.com/videos/play/wwdc2017/505/
Noté que con iMessage, ahora se pueden enviar y mostrar gifs animados. ¿Significa esto que Apple ahora admite la visualización de GIF animados en una aplicación, o es el método más fácil para dividir la imagen en cuadros y luego mostrarlos secuencialmente? ¿Cuál es la forma más fácil de mostrar un GIF animado a partir de iOS 5.1?
¡Gracias!
Otra alternativa es usar un UIWebView
para mostrar el GIF animado. Si el GIF se va a buscar desde un servidor, entonces esto se ocupa de la recuperación. También funciona con GIF locales.
Recomendaría usar el siguiente código, es mucho más liviano y compatible con proyectos ARC y no ARC, agrega una categoría simple en UIImageView:
FLAnimatedImage es un motor GIF animado de código abierto para iOS:
- Reproduce múltiples GIF simultáneamente con una velocidad de reproducción comparable a la de los navegadores de escritorio
- Honores retrasos de cuadros variables
- Se comporta con gracia bajo la presión de la memoria
- Elimina los retrasos o el bloqueo durante el primer ciclo de reproducción
- Interpreta los retrasos de fotogramas de los GIF rápidos de la misma manera que los navegadores modernos
Es un componente bien probado que escribí para impulsar todos los GIF en Flipboard .
Si tiene como objetivo iOS7 y ya tiene la imagen dividida en marcos, puede usar animatedImageNamed:duration:
Digamos que estás animando un spinner. Copie todos sus marcos en el proyecto y nómbrelos de la siguiente manera:
-
spinner-1.png
-
spinner-2.png
-
spinner-3.png
- etc. ,
Luego crea la imagen a través de:
[UIImage animatedImageNamed:@"spinner-" duration:1.0f];
Este método carga una serie de archivos al agregar una serie de números al nombre del archivo base provisto en el parámetro de nombre. Por ejemplo, si el parámetro del nombre tenía ''contenido'' como su contenido, este método intentaría cargar imágenes de archivos con los nombres ''imagen0'', ''imagen1'' y así sucesivamente hasta ''imagen1024''. Todas las imágenes incluidas en la imagen animada deben compartir el mismo tamaño y escala.
#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