2016-10-30 85 views
0

下面的相關代碼。我希望每個圖像在出現在整個動畫週期中時都具有淡入效果。運行此代碼時,gif動畫會影響工作,但不透明度更改的代碼不會。任何幫助將不勝感激。謝謝!如何在iOS中更改動畫gif圖像的不透明度

import UIKit 

class View1: UIViewController { 
    @IBOutlet weak var imageView: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     var imagesNames = ["ALA0.jpeg", "ALA1.jpeg", "ALA2.png", "ALA3.png", "ALA4.png", "ALA5.png", "ALA6.png", "ALA7.png", "ALA8.png", "ALA9.png", "ALA10.png"] 
     var images = [UIImage]() 

     for i in 0..<imagesNames.count{ 
      images.append(UIImage(named: imagesNames[i])!) 
      imageView.alpha = 0 
      UIImageView.animate(withDuration: 1.0) { 
       self.imageView.alpha = 1 
      } 
     } 

     imageView.animationImages = images 
     imageView.animationDuration = 6.0 

     self.imageView.startAnimating() 
    } 
} 
+0

對不起我的壞...讓我看看...謝謝你讓我知道...謝謝 – Joe

+0

代碼updated.let我知道代碼適用於周到,謝謝 – Joe

回答

0

試試下面的代碼:更新

for i in 0..<imagesNames.count{ 

     images.append(UIImage(named: imagesNames[i])!) 
     imageView.alpha = 0 
     UIImageView.animate(withDuration: 0.9, delay: 0, options: [UIViewAnimationOptions.curveEaseInOut,.repeat], animations: { 
      self.imageView.alpha = 1 
      }, completion: nil) 

    } 

     imageView.animationImages = images 
     imageView.animationDuration = 5 // I am using 5 images to perform animation 

注:從上面code.You會得到一個華麗的效果幀與幀和你有動畫的持續時間和總播放動畫持續時間來同步效果。

+0

謝謝!它的作品,它很漂亮! – Phillip

0

問題是你的動畫是在你的for循環中。

您有11張圖片,因此執行動畫的4行從imageView.alpha = 0開始執行11次,這會混淆動畫系統。

您應該在相同的地方將alpha設置爲0,而不是設置動畫圖像或持續時間。

至於實際的動畫,你應該把它放在viewDidAppear:。你不希望你的動畫直到視圖在屏幕上纔開始,否則它可能看起來並不是從一開始就開始。

最後,實例化圖像陣列的一個更好的辦法是

let images = imageNames.flatMap { UIImage(named: $0) }

即使Swiftier,無需聲明所有的名字(另外,UIImage(named:)會發現你的形象推廣,沒有必要添加它。)

let images = (0..<11).flatMap { UIImage(named: "ALA\($0)") }

+0

謝謝你指出。此外,知道您不必手動插入每個圖像的名稱也非常有用。 – Phillip