2015-10-14 72 views
1

/*我想重新加载gif在UIwebView在迅速,但我不知道如何重新加载gif连续循环。负荷要求不工作,甚至没有reload() */如何重新加载gif在快速UIWebView

filePath = NSBundle.mainBundle().pathForResource("alienImage", ofType: "gif") 

    let gif = NSData(contentsOfFile: filePath!) 

    let webViewBG = UIWebView(frame: self.view.frame) 

    webViewBG.loadData(gif!, MIMEType: "image/gif",textEncodingName: String(), baseURL: NSURL()) 

    webViewBG.userInteractionEnabled = false; 

    self.view.addSubview(webViewBG) 
+0

如果您的目的只是显示GIF图像,请考虑使用FLAnimatedImage。 –

回答

1

可以使用NSTimer用于显示到下面的代码,如:

myTimer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("myPerformeCode:"), userInfo: nil, repeats: true) 

和辅助方法是:

func myPerformeCode(timer : NSTimer) { 

    count++ 

    if count < totalCount { 
     let filePath = NSBundle.mainBundle().pathForResource("\(count)", ofType: "gif") 
     let gif = NSData(contentsOfFile: filePath!) 
     self.webView.loadData(gif!, MIMEType: "image/gif",textEncodingName: String(), baseURL: NSURL()) 
     self.webView.userInteractionEnabled = false 
    } else { 
     count = 1 
    } 
} 

完整代码:

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var webView: UIWebView! 
    let totalCount = 61 
    var count = 1 
    var myTimer = NSTimer() 
    override func viewDidLoad() { 
     super.viewDidLoad() 

    } 

    @IBAction func start(sender: AnyObject) { 

     myTimer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("myPerformeCode:"), userInfo: nil, repeats: true) 
    } 

    func myPerformeCode(timer : NSTimer) { 

     print("Called") 
     count++ 

     if count < totalCount { 
      let filePath = NSBundle.mainBundle().pathForResource("\(count)", ofType: "gif") 
      let gif = NSData(contentsOfFile: filePath!) 
      self.webView.loadData(gif!, MIMEType: "image/gif",textEncodingName: String(), baseURL: NSURL()) 
      self.webView.userInteractionEnabled = false 
     } else { 
      count = 1 
     } 
    } 
} 

结果:

enter image description here

之后,你可以随时进行切换视图与myTimer.invalidate()删除定时器。