在iOS中显示animationGIF
我注意到,使用iMessage,animationgif现在可以发送和显示。 这是否意味着苹果现在支持在应用程序中显示animationGIF,还是最简单的方法仍然是将图像分成几个帧,然后依次显示它们? 从iOS 5.1开始显示animationGIF最简单的方法是什么?
谢谢!
如果您的目标是iOS7,并且已经将图像拆分为多个帧,则可以使用animatedImageNamed:duration:
:。
假设你正在制作一个微调。 将所有帧复制到项目中,并按如下所示命名它们:
-
spinner-1.png
-
spinner-2.png
-
spinner-3.png
- 等等 ,
然后通过以下方式创build图像
[UIImage animatedImageNamed:@"spinner-" duration:1.0f];
从文档 :
此方法通过将一系列数字附加到name参数中提供的基本文件名称来加载一系列文件。 例如,如果名称参数具有“图像”作为其内容,则此方法将尝试从名称为“image0”,“image1”等的文件一直加载到“image1024”。 包含在animation图像中的所有图像应具有相同的大小和比例。
我会build议使用下面的代码,它更轻量级,兼容ARC和非ARC项目,它在UIImageView上添加一个简单的类别:
FLAnimatedImage是iOS的高性能开源animationGIF引擎:
- 以与桌面浏览器相媲美的播放速度同时播放多个GIF
- 尊重可变的帧延迟
- 在内心压力下performance优雅
- 消除第一个播放循环中的延迟或阻塞
- 以与现代浏览器相同的方式解释快速GIF的帧延迟
这是一个经过充分testing的组件,我写信给Flipboard中的所有GIF 。
另一种方法是使用UIWebView
来显示animation的GIF。 如果GIF将从服务器获取,那么这将负责抓取。 它也适用于当地的GIF。
#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
从iOS 11的照片框架允许添加GIFanimation播放。
示例应用程序可以在这里下载
有关GIFanimation播放的更多信息(从13:35分开始): https : //developer.apple.com/videos/play/wwdc2017/505/