在iOS中显示动画GIF


90

我注意到,使用iMessage,现在可以发送和显示动画gif。这是否意味着Apple现在支持在应用程序中显示动画GIF,还是最简单的方法仍然是将图像分成帧然后顺序显示?从iOS 5.1开始,显示动画GIF的最简单方法是什么?

谢谢!

Answers:


140

如果您的目标是iOS7,并且已经将图像拆分为多个帧,则可以使用animatedImageNamed:duration:

假设您要为微调器设置动画。将所有框架复制到项目中,并按以下方式命名:

  • spinner-1.png
  • spinner-2.png
  • spinner-3.png
  • 等等

然后通过以下方式创建图像:

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

从文档

该方法通过将一系列数字附加到name参数中提供的基本文件名中来加载一系列文件。例如,如果name参数的内容为“ image”,则此方法将尝试从名称为“ image0”,“ image1”等文件一直加载到“ image1024”的文件中加载图像。动画图像中包含的所有图像应共享相同的大小和比例。


5
如果帧中没有动画,则可以在“预览”应用中打开GIF,然后将帧拖出。:该框架应被抽取为.TIFF,所以当时看到这里maclife.com/article/howtos/...
安德烈FRATELLI


38

FLAnimatedImage是适用于iOS的高性能开源动画GIF引擎:

  • 同时播放多个GIF,其播放速度可与台式机浏览器媲美
  • 荣誉可变的帧延迟
  • 在记忆压力下行为优雅
  • 消除第一个播放循环中的延迟或阻塞
  • 以与现代浏览器相同的方式解释快速GIF的帧延迟

我编写了一个经过充分测试的组件,为Flipboard中的所有GIF提供动力


当前框架属性在该框架中返回错误!github.com/Flipboard/FLAnimatedImage/issues/222
Mo Farhand

12

另一种选择是使用a UIWebView来显示动画GIF。如果要从服务器中获取GIF,则将负责获取。它也可以与本地GIF一起使用。


谢谢。这很好。但是,第一次将gif加载到Webview中时可能会有些滞后,从而导致动画的“慢动作”。如果您要求它更平滑,则在此问题的答案中共享的动画帧可能会更好。

2
“从iOS 8.0和OS X 10.10开始,使用WKWebView将Web内容添加到您的应用程序。请勿使用UIWebView或WebView。” developer.apple.com/reference/webkit/wkwebview
Jason Moore

1
使用WebKit显示GIF就像购买一艘货船将您的杂货运送到您的房屋。Web视图非常昂贵,并且需要初始化完整的JavaScript和呈现引擎。我强烈建议您使用图片查看解决方案
-Sirens


7
#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

内存使用率低且易于使用,但播放gif的速度非常慢
Roman Truba 2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.