Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert NSNotification.userInfo[UIKeyboardAnimationCurveUserInfoKey] to Enum

Tags:

ios

swift

Using NSNumber from NSNotification.userInfo[UIKeyboardAnimationCurveUserInfoKey]

In Objective C I would do the following

 [UIView animateWithDuration:1.0
                      delay:0
                    options:(curveValue.intValue << 16)

Swift will not allow me to do the same even though the bitshift operator is the same. I would like to get the enum raw value which is equivalent

UIViewAnimationOptionCurveEaseInOut = 0 << 16,

UIViewAnimationOptionCurveEaseIn = 1 << 16,

UIViewAnimationOptionCurveEaseOut = 2 << 16,

UIViewAnimationOptionCurveLinear = 3 << 16,

update


I am not sure if the below approach is correct , it seems to work

 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)
like image 329
Ryan Heitner Avatar asked Jun 04 '14 15:06

Ryan Heitner


2 Answers

In Beta-5

UIViewAnimationOptions.fromRaw(
    UInt(
        ( p.userInfo[ UIKeyboardAnimationCurveUserInfoKey ] as NSNumber ).unsignedIntValue << 16
    )
)!
like image 51
Satachito Avatar answered Oct 13 '22 07:10

Satachito


You have to init a UIViewAnimationOptions with the rawValue like this:

UIView.animateWithDuration(1.0, delay: 0, options: UIViewAnimationOptions.init(rawValue:UInt(curveValue.intValue << 16)),

like image 41
n6xej Avatar answered Oct 13 '22 07:10

n6xej