Отображать анимированный 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/
![введите описание изображения здесь]()