2015-10-24 91 views
0

我似乎無法在Xcode中製作一個簡單的淡入淡出動畫。簡單的動畫問題Xcode 7 Swift

我想要做的就是在viewDidLoad(它工作正常)後2秒內使圖像淡入淡出,但是一旦我爲淡出動畫添加代碼,圖像永遠不會被隱藏起來。

這裏是我的代碼:

image.alpha = 0 


UIView.animateWithDuration(1, delay: 2, options: [], animations: {() -> Void in 
     self.image.alpha = 1 
     }, completion: nil) 

    UIView.animateWithDuration(1, delay: 3, options: [], animations: {() -> Void in 
     self.image.alpha = 0 
     }, completion: nil) 

我使用UIImages的動畫。

回答

0

簡單地鏈接UIView.animateWithDuration動畫在相同的範圍內是有問題的。實現你描述將調用第一個完成區塊的第二動畫效果,像這樣

self.image.alpha = 0 

UIView.animateWithDuration(1, delay: 2, options: [], animations: {() -> Void in 
    self.image.alpha = 1 
    }, completion: { finished in 

     UIView.animateWithDuration(1, delay: 0, options: [], animations: {() -> Void in 
     self.image.alpha = 0 
     }, completion: nil) 
}) 

編輯一個辦法:這並不直接涉及到您所描述的問題,但只是爲了根據您的問題的措辭添加一些常規建議:通常最好在視圖控制器的viewWillAppearviewDidAppear方法中啓動初始定時動畫。被調用並不一定意味着視圖馬上顯示,這可能會導致您的時間不準(特別是如果您的視圖在內存和資源方面變得更復雜)。

1

嘗試了這一點:

UIView.animateWithDuration(1, delay: 2, options: [], animations: {() -> Void in 
    self.image.alpha = 1 
    }, completion: { 
     UIView.animateWithDuration(1, delay: 3, options: [], animations: {() -> Void in 
      self.image.alpha = 0 
     }, completion: nil) 
}) 

簡單的規則:等待一個動畫來完成你開始了與其他前。你正在執行它們,導致第一個沒有效果的狀態。