我注意到,使用iMessage,现在可以发送和显示动画gif。这是否意味着Apple现在支持在应用程序中显示动画GIF,还是最简单的方法仍然是将图像分成帧然后顺序显示?从iOS 5.1开始,显示动画GIF的最简单方法是什么?
谢谢!
Answers:
如果您的目标是iOS7,并且已经将图像拆分为多个帧,则可以使用animatedImageNamed:duration:
。
假设您要为微调器设置动画。将所有框架复制到项目中,并按以下方式命名:
spinner-1.png
spinner-2.png
spinner-3.png
然后通过以下方式创建图像:
[UIImage animatedImageNamed:@"spinner-" duration:1.0f];
从文档:
该方法通过将一系列数字附加到name参数中提供的基本文件名中来加载一系列文件。例如,如果name参数的内容为“ image”,则此方法将尝试从名称为“ image0”,“ image1”等文件一直加载到“ image1024”的文件中加载图像。动画图像中包含的所有图像应共享相同的大小和比例。
我建议使用以下代码,它更轻巧,并且与ARC和非ARC项目兼容,并且在UIImageView上添加了一个简单的类别:
FLAnimatedImage是适用于iOS的高性能开源动画GIF引擎:
我编写了一个经过充分测试的组件,为Flipboard中的所有GIF提供动力。
另一种选择是使用a UIWebView
来显示动画GIF。如果要从服务器中获取GIF,则将负责获取。它也可以与本地GIF一起使用。
从iOS 11的照片框架可以添加动画Gif播放。
可以在此处下载示例应用
有关动画Gif播放的更多信息(从13:35分钟开始):https : //developer.apple.com/videos/play/wwdc2017/505/
#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