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

14

UIKeyboardWillShowNotification的userInfo字典中,关键字UIKeyboardAnimationCurveUserInfoKey 包含一个值为7Int

现在我需要将这个Int传递给UIView.setAnimationCurve(<here>)。我尝试创建所需的UIViewAnimationCurve枚举,如下所示:UIViewAnimationCurve(rawValue: 7)。因为未记录该枚举的原始值7,结果始终为nil

这种方法在Objective-C中可以正常工作。有什么办法可以将这个动画曲线从通知中获取并在Swift中使用UIView动画吗?


更新: 正如Martin指出的那样,自Xcode 6.3起,这已经不再是问题了。

Xcode 6.3发行说明中可知:

导入具有未记录值(例如UIViewAnimationCurve)的NS_ENUM类型现在可以使用init(rawValue:)初始化程序从其原始整数值转换,而不会被重置为nil。 可以编写使用原始值初始化程序的代码来解决此问题,而无需使用unsafeBitCast


1
请注意,这个问题在 Swift 1.2 中已经不存在了,如 Xcode 6.3 发布说明所记录的那样。 - Martin R
1个回答

9

我想我已经理解了,但是我不确定这是否是正确的做法。

let animationCurve = unsafeBitCast(7, UIViewAnimationCurve.self)
UIView.setAnimationCurve(animationCurve)
更新:问题中提供的解决方案同样有效。
var animationCurve = UIViewAnimationCurve.EaseInOut
NSNumber(integer: 7).getValue(&animationCurve)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接