如何将原始值7强制为UIViewAnimationCurve枚举?

Seb*_*che 10 enums uiviewanimation uiviewanimation-curve swift

UIKeyboardAnimationCurveUserInfoKeya的userInfo字典中的键UIKeyboardWillShowNotification包含Int7.

现在我需要将其传递IntUIView.setAnimationCurve(<here>).我尝试像这样创建所需的UIViewAnimationCurve枚举UIViewAnimationCurve(rawValue: 7).由于原始值7未记录,因此结果始终如此nil.

它在Objective-C中以这种方式运行良好.知道如何使用Swift将这个动画曲线从通知转换为UIView动画吗?


更新:正如Martin所指出的那样,自Xcode 6.3以来,这不再是一个问题.

来自Xcode 6.3发行说明:

现在可以使用init(rawValue :)初始化程序从原始整数值转换导入的具有未记录值的NS_ENUM类型(例如UIViewAnimationCurve),而不会将其重置为nil.可以编写使用unsafeBitCast作为此问题的变通方法的代码来使用原始值初始值设定项.

Seb*_*che 7

我想我已经明白了,但我不确定这是不是应该这样做的方式.

let animationCurve = unsafeBitCast(7, UIViewAnimationCurve.self)
UIView.setAnimationCurve(animationCurve)
Run Code Online (Sandbox Code Playgroud)


更新:问题中包含的解决方案也适用.

var animationCurve = UIViewAnimationCurve.EaseInOut
NSNumber(integer: 7).getValue(&animationCurve)
Run Code Online (Sandbox Code Playgroud)