2014-06-30 10 views
5

Chcę użyć gif w UIImageView, ale nie mogę. Mój kod to:Jak wyświetlić gif w UIImageView w 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") 

w Objective C miałem animatedImageWithAnimatedGIFData ale w szybkich nie wiem jak nazwać to czy nie istnieje ..

Dzięki!

+0

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

Odpowiedz

11

Zakładam, że używasz https://github.com/mayoff/uiimage-from-animated-gif dla +UIImage animatedImageWithAnimatedGIFData:, a kod źródłowy znajduje się w Objective-C.

Najpierw należy zaimportować swoje nagłówki Objective-C do Swift. Using Swift with Cocoa and Objective-C wyjaśnia, jak to zrobić:

Aby zaimportować zestaw Objective-C plików w tym samym celu ramowego jako kod SWIFT, trzeba importować te pliki w nagłówku parasol Objective-C dla szkieletu .

Aby zaimportować kod Objective-C w Swift od samego ramach

  1. obszarze Ustawienia budować, w opakowaniu, upewnij się, że moduł Określa ustawienia dla tego celu ramowej jest ustawiona na Tak.
  2. W pliku nagłówkowym parasolki zaimportuj każdy nagłówek Objective-C, który chcesz eksponować na Swift. Na przykład:

    #import "UIImage+animatedGIF.h"

Następnie można skonfigurować swój testImage następująco:

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

Świetnie! Dzięki! W porządku. Ale mam inne pytanie, istnieje inna forma, aby pokazać gif bezpośrednio bez IImage + animowany GIF? – user3745888

+0

UIImage nie obsługuje _animated_ GIF-ów, ale możesz używać nieruchomych obrazów GIF, tak jak każdego innego obrazu ('UIImage (named:" image.gif ")'). Jeśli jednak możesz podzielić animowany GIF na osobne pliki GIF obrazów nieruchomych, możesz załadować je do animacji UIImage w następujący sposób: http://stackoverflow.com/a/2578648/2155985 –

Powiązane problemy