Отображать анимированный GIF в iOS

Я заметил, что с iMessage теперь можно отправлять и отображать анимированные gif. Означает ли это, что Apple теперь поддерживает отображение анимированных GIF файлов в приложении или же самый простой способ разделить изображение в кадрах, а затем последовательно отобразить их? Каков самый простой способ отображения анимированного GIF с iOS 5.1?

Спасибо!

Ответ 1

Если вы ориентируетесь на iOS7 и уже имеете изображение, разбитое на фреймы, вы можете использовать animatedImageNamed:duration:.

Скажем, вы оживляете спиннер. Скопируйте все свои фреймы в проект и назовите их следующим образом:

  • spinner-1.png
  • spinner-2.png
  • spinner-3.png
  • и т.д.,

Затем создайте изображение с помощью:

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

Из документов:

Этот метод загружает ряд файлов, добавляя ряд чисел к базовому имени файла, указанному в параметре name. Например, если параметр имени имел "изображение в качестве его содержимого", этот метод попытайтесь загрузить изображения из файлов с именами image0, image1 и так далее вплоть до 'image1024. Все изображения, включенные в анимированное изображение должно иметь одинаковый размер и масштаб.

Ответ 2

Я бы рекомендовал использовать следующий код, гораздо более легкий и совместимый с ARC и не-ARC-проектом, добавляет простую категорию в UIImageView:

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

Ответ 3

FLAnimatedImage - это мощный анимированный движок GIF с открытым исходным кодом для iOS:

  • Воспроизведение нескольких GIF одновременно со скоростью воспроизведения, сравнимой для настольных браузеров
  • Отмечает переменные задержки кадров
  • Хорошо работает под давлением памяти
  • Устраняет задержки или блокировку во время первого цикла воспроизведения.
  • Интерпретирует задержки кадров быстрых GIF так же, как и современные браузеры.

Это хорошо протестированный компонент, который я написал в чтобы включить все GIF в Flipboard.

Ответ 4

Другой альтернативой является использование UIWebView для отображения анимированного GIF. Если GIF будет получен с сервера, тогда это позаботится об извлечении. Он также работает с локальными GIF.

Ответ 5

#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

Ответ 6

От рамки iOS 11 Фото позволяет добавлять анимированные Gif файлы.

Пример приложения можно загрузить здесь

Подробнее о анимационном воспроизведении Gifs (начиная с 13:35 мин.): https://developer.apple.com/videos/play/wwdc2017/505/

введите описание изображения здесь