将NSNotification.userInfo [UIKeyboardAnimationCurveUserInfoKey]转换为Enum

时间:2014-06-04 15:36:50

标签: ios swift

使用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)

4 个答案:

答案 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)