使用NSNotification.userInfo中的NSNumber [UIKeyboardAnimationCurveUserInfoKey]
在Objective C中,我将执行以下操作
[UIView animateWithDuration:1.0
delay:0
options:(curveValue.intValue << 16)
即使bitshift运算符相同,Swift也不允许我这样做。我想获得相当于枚举原始值
UIViewAnimationOptionCurveEaseInOut = 0&lt;&lt; 16,
UIViewAnimationOptionCurveEaseIn = 1&lt;&lt; 16,
UIViewAnimationOptionCurveEaseOut = 2&lt;&lt; 16,
UIViewAnimationOptionCurveLinear = 3&lt;&lt; 16,
更新
我不确定以下方法是否正确,似乎有效
var animationCurve : UIViewAnimationOptions = UIViewAnimationOptions.CurveEaseOut
info[UIKeyboardAnimationCurveUserInfoKey].getValue(&animationCurve)
UIView.animateWithDuration(durationValue.doubleValue,
delay: 0,
options: animationCurve,
animations: {self.navigationController.toolbar.frame = myRect},
completion: nil)
答案 0 :(得分:3)
在Beta-5中
UIViewAnimationOptions.fromRaw(
UInt(
( p.userInfo[ UIKeyboardAnimationCurveUserInfoKey ] as NSNumber ).unsignedIntValue << 16
)
)!
答案 1 :(得分:1)
您必须使用rawValue初始化UIViewAnimationOptions,如下所示:
UIView.animateWithDuration(1.0,
delay: 0,
options: UIViewAnimationOptions.init(rawValue:UInt(curveValue.intValue << 16)),
答案 2 :(得分:0)
这是你需要的吗?
UIViewAnimationCurve.fromRaw(Int(hereGoesYourStuff))
答案 3 :(得分:-1)
let animationKey = userInfo[UIKeyboardAnimationCurveUserInfoKey] as UInt
UIViewAnimationOptions(rawValue: animationKey)