2014-10-27 32 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) 以确保类型签名代码的读者相匹配。