如何在Swift中将gif显示到UIImageView中?

时间:2014-06-30 07:51:48

标签: animation swift gif ios8

我想在UIImageView中使用gif,但我不能。 我的代码是:

- (void)viewDidLoad {
    [super viewDidLoad];

    NSURL *url = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"gif"];
    UIImage *testImage = [UIImage animatedImageWithAnimatedGIFData:[NSData dataWithContentsOfURL:url]];
    self.dataImageView.animationImages = testImage.images;
    self.dataImageView.animationDuration = testImage.duration;
    self.dataImageView.animationRepeatCount = 1;
    self.dataImageView.image = testImage.images.lastObject;
    [self.dataImageView startAnimating];
}

夫特:

var url : NSURL = NSBundle.mainBundle().URLForResource("MAES", withExtension: "gif")

在目标C中我有animatedImageWithAnimatedGIFData,但是在swift中我不知道如何调用此函数或者如果不存在...

谢谢!

1 个答案:

答案 0 :(得分:12)

我假设您正在使用+UIImage animatedImageWithAnimatedGIFData: #import "UIImage+animatedGIF.h",而源代码位于Objective-C。

您需要先将Objective-C标头导入Swift。 https://github.com/mayoff/uiimage-from-animated-gif 解释了如何执行此操作:

  

要在与Swift代码相同的框架目标中导入一组Objective-C文件,   你需要将这些文件导入到Objective-C伞形标题中   框架。

     

从同一框架将Objective-C代码导入Swift

     
      
  1. 在“构建设置”下的“打包”中,确保将该框架目标的“定义模块”设置设置为“是”。
  2.   
  3. 在伞形头文件中,导入要向Swift公开的每个Objective-C标头。例如:

         

    testImage

  4.   

然后,您可以按如下方式设置var testImage = UIImage.animatedImageWithAnimatedGIFData( NSData.dataWithContentsOfURL(url)) self.dataImageView.animationImages = testImage.images self.dataImageView.animationDuration = testImage.duration self.dataImageView.animationRepeatCount = 1 self.dataImageView.image = testImage.images.lastObject self.dataImageView.startAnimating()

{{1}}