2014-10-27 60 views
0

我想要做的迅速Swift編譯器bug可能嗎?

UIView.animateWithDuration(UINavigationControllerHideShowBarDuration, animations: {() -> Void in 
     return 
    }) 

最簡單的動畫,但我越來越呼叫

任何想法缺少論據參數「延遲」?

+1

您是否嘗試添加「延遲」參數? – APerson 2014-10-27 18:20:12

+0

是的基本上增加了所有的參數問題是與UINavigationControllerHideShowBarDuration – sger 2014-10-27 18:23:22

回答

4

UINavigationControllerHideShowBarDurationFloat,但duration: 參數具有類型NSTimeInterval(這是一個Double別名)。因此,你必須 明確轉換:

UIView.animateWithDuration(NSTimeInterval(UINavigationControllerHideShowBarDuration), animations: {() -> Void in 
    return 
}) 
+0

謝謝你先生很好 – sger 2014-10-27 18:31:05

1

UIView類方法animateWithdDuration:animations:被定義爲:

class func animateWithDuration(_ duration: NSTimeInterval, animations animations:() -> Void) 注意第一個參數的類型爲NSTimeInterval,而UINavigationControllerHideShowBarDuration類型爲CGFloat的恆定:

let UINavigationControllerHideShowBarDuration: CGFloat

檢查documentation for NSTimeInterval表明夫特它是對於雙

typealias NSTimeInterval = Double

一個TypeAlias所以我們必須讓我們的CGFloat的轉換爲雙撥打電話的工作。 我們可以很容易地從一個CGFloat的由Double(UINavigationControllerHideShowBarDuration)

一個雙重這可能是更好的使用NSTimeInterval(UINavigationControllerHideShowBarDuration) 以確保類型簽名代碼的讀者相匹配。