UIKeyboardAnimationCurveUserInfoKey
的userInfo字典中的密钥UIKeyboardWillShowNotification
包含Int
,其值为7
。
现在我需要将此Int
传递给UIView.setAnimationCurve(<here>)
。我尝试像这样UIViewAnimationCurve(rawValue: 7)
创建所需的UIViewAnimationCurve枚举。由于原始值7
未记录,因此结果始终为nil
。
它在Objective-C中以这种方式运行良好。知道如何使用Swift将这个动画曲线从通知转换为UIView动画吗?
更新:正如Martin所指出的那样,自Xcode 6.3以来,这不再是一个问题。
带有未记录值的导入的NS_ENUM类型(例如UIViewAnimationCurve)现在可以使用init(rawValue :)初始化程序从其原始整数值转换而不会重置为nil。可以编写使用unsafeBitCast作为此问题的变通方法的代码来使用原始值初始值设定项。
答案 0 :(得分:6)
我想我已经明白了,但我不确定这是不是应该这样做的。
let animationCurve = unsafeBitCast(7, UIViewAnimationCurve.self)
UIView.setAnimationCurve(animationCurve)
更新:此question中包含的解决方案也适用。
var animationCurve = UIViewAnimationCurve.EaseInOut
NSNumber(integer: 7).getValue(&animationCurve)