我注意到,使用iMessage,现在可以发送和显示动画GIF。这是否意味着Apple现在支持在应用程序中显示动画GIF,或者最简单的方法仍然是将图像分割成帧然后依次显示它们?从iOS 5.1开始显示动画GIF的最简单方法是什么?
谢谢!
答案 0 :(得分:138)
如果您的目标是iOS7并且已将图像拆分为框架,则可以使用animatedImageNamed:duration:
。
假设您正在为一个微调器制作动画。将所有框架复制到项目中,并按如下方式命名:
spinner-1.png
spinner-2.png
spinner-3.png
然后通过以下方式创建图像:
[UIImage animatedImageNamed:@"spinner-" duration:1.0f];
此方法通过附加一系列数字来加载一系列文件 到name参数中提供的基本文件名。例如,如果 name参数有'image'作为其内容,此方法会 尝试从名为'image0','image1'的文件加载图像 等等'image1024'一直到来。包含在中的所有图像 动画图像应该具有相同的大小和比例。
答案 1 :(得分:37)
我建议使用以下代码,它更轻量级,并且与ARC和非ARC项目兼容,它在UIImageView上添加了一个简单的类别:
答案 2 :(得分:37)
FLAnimatedImage是适用于iOS的高性能开源动画GIF引擎:
这是我写给power all GIFs in Flipboard的经过充分测试的组件。
答案 3 :(得分:12)
另一种方法是使用UIWebView
来显示动画GIF。如果要从服务器获取GIF,那么这将负责获取。它也适用于本地GIF。
答案 4 :(得分:8)
从 iOS 11 照片框架允许添加动画Gif播放。
示例应用可以下载here
有关GIF动画播放的更多信息(从13:35开始):https://developer.apple.com/videos/play/wwdc2017/505/
答案 5 :(得分: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
答案 6 :(得分:1)
答案 7 :(得分:0)
NSString *pathForGif = [[NSBundle mainBundle] pathForResource:@"ic_homepage_random0330" ofType: @"gif"];
NSData *gifData = [NSData dataWithContentsOfFile:pathForGif];
YYImage *img = [YYImage imageWithData:gifData];
YYAnimatedImageView *contentImageView = [[YYAnimatedImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
contentImageView.autoPlayAnimatedImage = YES;
contentImageView.image = img;