2016-03-02 265 views
0

我有這個資產作爲視圖的背景,並使用下面描述的代碼分配給背景。動畫背景UIImage

該動畫是讓對角線行生成動畫,所以當加載發生時,它們從左向右移動。

如何完成此任務的任何指針?

var view = UIImageView() 
view.translatesAutoresizingMaskIntoConstraints = false 
view.image = UIImage(assetIdentifier: "background-view") 
view.layer.cornerRadius = 8.0 
view.layer.masksToBounds = true 
view.contentMode = .ScaleAspectFill 
view.clipsToBounds = true 
view.backgroundColor = UIColor.whiteColor() 

return view 

「背景圖」是這裏 enter image description here

回答

0

我想最好的辦法是有需要的所有圖像(所有幀)來創建你想要的動畫形象,然後把這些圖像UIImageView's animationImages財產。例如,如果你得到一個加載欄gif loading_bar.gif,你可以得到在該gif中的所有不同的圖像(c.f.本教程等:http://www.macobserver.com/tmo/article/preview-extracting-frames-from-animated-gifs)。

負荷都在你的代碼的圖像(例如資產的文件夾),然後做一些事情,如:

func getAnimatedImages -> Array<UIImage> 
{ 
    var animatedImages = Array<UIImage>() 
    var allImagesLoaded = false 
    var i = 0 
    while !allImagesLoaded 
    { 
     if let image = UIImage(named: "background_" + String(i)) 
     { 
      animatedImages.append(image) 
      i++ 
     } 
     else 
     { 
      allImagesLoaded = true 
     } 
    } 

    return animatedImages 
} 

(如果你叫你的圖片background_0,background_1,等...) 然後

self.yourBackgroundImageView.animationImages = self.getAnimatedImages 
self.yourBackgroundImageView.startAnimating() 
+0

難道我們不能用一些位置屬性和動畫呢?我想避免有多個圖像 – Sana

0

我會使用的方法class func animatedImageNamed(_ name: String, duration duration: NSTimeInterval) -> UIImage?

從Apple DOC:

此方法會嘗試從文件名'image0','image1'等一直到'image1024'加載圖像。包含在動畫圖像中的所有圖像應該具有相同的大小和比例。

如果您創建一個動畫圖像,您可以將其分配給您的UIImageView,它會自動生成動畫。

至於圖像創建@Randy有一個不錯的主意:)

+0

我想避免創建更多的圖像,所以我想使用相同的圖像,並獲得效果。 – Sana

+0

您可以對動畫進行編碼。我不知道也許使用更大的圖像,並將其向前移動>重置爲零>再次前進等等...聞起來有點哈克嗎:) – mt81

+0

當然,你可以用核心圖形來做... http: //www.coreanimator.com/#animatecode – mt81