2014-06-26 76 views
1

我試圖爲視圖的背景顏色設置動畫。在animationDidStop委託方法中,我嘗試使用CABasicAnimation對象的toValue屬性設置最終背景色。該代碼似乎在編輯器中是正確的,但是當我編譯項目時,鏈接程序找不到CGColor類。代碼工作,如果我使用一個const UIColor)省略UIColor(CGColor: animation.toValue as CGColor!)的表達(例如

class ViewController: UIViewController { 

    @IBAction func colorSelected(sender: UIButton) 
    { 
     let animation = CABasicAnimation(keyPath: "backgroundColor") 
     animation.toValue = sender.backgroundColor.CGColor 
     animation.delegate = self 
     self.view.layer.addAnimation(animation, forKey: "fadeAnimation") 
    } 

    @objc override func animationDidStop(anim: CAAnimation!, finished flag: Bool) { 
     let animation = anim as CABasicAnimation 
     self.view.backgroundColor = UIColor(CGColor: animation.toValue as CGColor!) 
    } 

} 

UPDATE:在Xcode 6的β3的代碼編譯,但一個例外是在方法swift_dynamicCastUnknownClassUnconditional提出其中toValue屬性是鑄造到CGColor

這種奇怪的行爲似乎與某些Xcode問題有關。

回答

0

這與編譯器錯誤有關,正如Apple在this論壇主題中所闡明的那樣。請求了雷達和歸檔:17603642.

0

記住類是CGColorRef而不是CGColor。 CGColor是UIColor上的屬性,以獲得CGColorRef像[UIColor redColor].CGColor

+0

改寫爲 '讓顏色:CGColorRef = animation.toValue作爲CGColorRef' 'self.view.backgroundColor =的UIColor(CGColor:顏色)' 我得到了同樣的連接錯誤 – mxb

+0

不應該是'self.view.backgroundColor = UIColor(CGColorRef:color)'?? –

+0

'UIColor(CGColorRef:color)'不能編譯... – mxb

相關問題