The key UIKeyboardAnimationCurveUserInfoKey
in the userInfo dictionary of a UIKeyboardWillShowNotification
contains an Int
with the value 7
.
Now I need to pass this Int
into UIView.setAnimationCurve(<here>)
. I tried to create the required UIViewAnimationCurve enum like this UIViewAnimationCurve(rawValue: 7)
. Because the raw value 7
is undocumented, the result is always nil
.
It works fine this way in Objective-C. Any idea how to get this animation curve from the notification into a UIView animation using Swift?
Update: As pointed out by Martin, this is no longer a problem since Xcode 6.3.
From the Xcode 6.3 Release Notes:
Imported
NS_ENUM
types with undocumented values, such asUIViewAnimationCurve
, can now be converted from their raw integer values using theinit(rawValue:)
initializer without being reset tonil
. Code that usedunsafeBitCast
as a workaround for this issue can be written to use the raw value initializer.
I think I figured it out, but I'm not sure if this is the way it's supposed to be done.
let animationCurve = unsafeBitCast(7, UIViewAnimationCurve.self)
UIView.setAnimationCurve(animationCurve)
Update: The solution contained in this question works as well.
var animationCurve = UIViewAnimationCurve.EaseInOut
NSNumber(integer: 7).getValue(&animationCurve)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With