2014-06-30 6 views
5

Ich möchte ein gif in UIImageView verwenden, aber ich kann nicht. Mein Code ist:Wie zeige ich gif in UIImageView in Swift?

- (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]; 
} 

Swift:

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

in Objective C Ich animatedImageWithAnimatedGIFData hatte aber in swift ich weiß nicht, wie diese anrufen oder, wenn nicht vorhanden ist ..

Dank!

+0

http://stackoverflow.com/questions/27919620/swift-uiimageview-animate- gif-from-url/27922518 # 27922518 –

Antwort

11

Ich nehme an, Sie verwenden für +UIImage animatedImageWithAnimatedGIFData: und der Quellcode ist in Objective-C.

Sie müssen zuerst Ihre Objective-C-Header in Swift importieren. Using Swift with Cocoa and Objective-C erklärt, wie dies zu tun:

Um einen Satz von Objective-C-Dateien im gleichen Rahmen Ziel als Swift-Code zu importieren, Sie diese Dateien in die Objective-C Regenschirm Header importieren müssen für das Framework.

zu Objective-C-Code in Swift aus dem gleichen Rahmen

  1. Unter Build-Einstellungen, in Verpackung, stellen Sie sicher, dass das Defines Modul für diese Rahmens Zieleinstellung auf Ja gesetzt ist zu importieren.
  2. Importieren Sie in Ihrer Umbrella-Headerdatei alle Objective-C-Header, die Sie Swift bereitstellen möchten. Zum Beispiel:

    #import "UIImage+animatedGIF.h"

können Sie dann Ihre testImage Setup wie folgt:

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() 
+0

Großartig! Vielen Dank! Es ist in Ordnung. Aber ich habe andere Frage, gibt es andere Form, ein Gif direkt ohne IImage + animatedGIF zu zeigen? – user3745888

+0

UIImage unterstützt keine _animated_ GIFs, aber Sie können Standbild-GIF-Bilder wie jedes andere Bild verwenden ('UIImage (mit dem Namen:" image.gif ")'). Wenn Sie jedoch Ihr animiertes GIF in separate Standbild-GIFs aufteilen können, können Sie diese wie folgt in die UIImage-Animation laden: http://StackOverflow.com/a/2578648/2155985 –

Verwandte Themen