我想在swift中做最简单的动画
UIView.animateWithDuration(UINavigationControllerHideShowBarDuration, animations: { () -> Void in
return
})
但是我得到了参数'延迟'在电话中
任何想法?
答案 0 :(得分:4)
UINavigationControllerHideShowBarDuration
是Float
,但是duration:
参数的类型为NSTimeInterval
(Double
的别名)。所以你有
明确转换:
UIView.animateWithDuration(NSTimeInterval(UINavigationControllerHideShowBarDuration), animations: { () -> Void in
return
})
答案 1 :(得分:1)
UIView类方法animateWithdDuration:animations:定义为:
class func animateWithDuration(_ duration: NSTimeInterval,
animations animations: () -> Void)
请注意,第一个参数的类型为NSTimeInterval,而UINavigationControllerHideShowBarDuration是CGFloat类型的常量:
let UINavigationControllerHideShowBarDuration: CGFloat
检查documentation for NSTimeInterval表明在Swift中它是Double的TypeAlias
typealias NSTimeInterval = Double
因此我们必须将我们的CGFloat转换为Double以使调用工作。
我们可以通过Double(UINavigationControllerHideShowBarDuration)
使用NSTimeInterval(UINavigationControllerHideShowBarDuration)
可能更好
确保类型签名与代码的读者匹配。