2015-04-23 50 views
-1

正如標題所述,我無法讓UIButton淡入ViewDidLoad方法中。這裏是我的代碼至今:無法讓UIButton淡入ViewDidLoad

ViewController.swift

import UIKit 
import QuartzCore 
class ViewController: UIViewController { 

    @IBOutlet weak var nextButton: UIButton! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.nextButton.fadeIn(duration: 10.0, delay: 10.0) 
    } 
} 

UIViewExtensions.swift

import Foundation 
import UIKit 

extension UIView { 
    func fadeIn(duration: NSTimeInterval = 1.0, delay: NSTimeInterval = 0.0, completion: ((Bool) -> Void) = {(finished: Bool) -> Void in}) { 
     UIView.animateWithDuration(duration, delay: delay, options: UIViewAnimationOptions.CurveEaseIn, animations: { 
      self.alpha = 1.0 
      }, completion: completion) } 

    func fadeOut(duration: NSTimeInterval = 1.0, delay: NSTimeInterval = 0.0, completion: (Bool) -> Void = {(finished: Bool) -> Void in}) { 
     UIView.animateWithDuration(duration, delay: delay, options: UIViewAnimationOptions.CurveEaseIn, animations: { 
      self.alpha = 0.0 
      }, completion: completion) 
    } 
} 
+0

你叫淡入,但你確定你以前設置α爲0。如果您剛初始化視圖,則無法將動畫從1變爲1. – Dare

回答

1

你不想啓動任何動畫就像是衰落,在viewDidLoad中。當類完成初始化時(在init之後),將調用此方法。它發生在視圖可見之前。你想在viewDidAppear中開始動畫。一旦視圖在屏幕上可見,就會調用它。當你在viewDidLoad中啓動它時,它已經在動畫到達viewDidAppear的時候完成了,假設當然你已經在大約0.5秒內完成了淡入淡出。

+0

好的,謝謝!我將它添加到ViewDidAppear中,但是,UIButton漸變的動畫仍然只是簡單地出現。 –

+0

是的,它是將它移動到viewDidAppear並將alpha設置爲在動畫塊之前以0開頭的組合。然後在動畫塊的持續時間內將alpha提高到1。 –

1

設置你按鈕阿爾法爲0的故事板,這樣就可以在褪色。

因爲,如果你的按鈕alpha爲1,那麼你想動畫1,IOS無能爲力

override func viewDidAppear(animated: Bool) { 
     self.button.fadeIn(duration: 3, delay: 0) 

    } 
+0

AGH,我不知道我該怎麼忘記這個!無論如何,在將alpha設置爲0之後,它仍然不會淡入,而是保持不可見。 –

+0

在你的功能中,你必須等待10秒鐘。將其設置爲0,並將其放入viewDidAppear中,查看更新。我認爲它更好,因爲您的動畫持續時間太長 – Leo