13

UIKeyboardAnimationCurveUserInfoKeyのuserInfo ディクショナリ内のキーには、値を持つUIKeyboardWillShowNotificationが含まれています。Int7

Intこれをに渡す必要がありますUIView.setAnimationCurve(<here>)。このような必要な UIViewAnimationCurve 列挙型を作成しようとしましたUIViewAnimationCurve(rawValue: 7)。生の値7は文書化されていないため、結果は常にnil.

Objective-C ではこの方法で問題なく動作します。Swift を使用して通知から UIView アニメーションにこのアニメーション カーブを取得する方法はありますか?


更新: Martin が指摘したように、これは Xcode 6.3 以降の問題ではなくなりました。

Xcode 6.3 リリース ノートから:

NS_ENUMなどの文書化されていない値を持つインポートされた型は、初期化子を使用して にリセットすることなくUIViewAnimationCurve生の整数値から変換できるようになりました。この問題の回避策として使用されたコードは、raw 値初期化子を使用するように記述できます。init(rawValue:)nilunsafeBitCast

4

1 に答える 1

9

私はそれを理解したと思いますが、これが本来のやり方であるかどうかはわかりません。

let animationCurve = unsafeBitCast(7, UIViewAnimationCurve.self)
UIView.setAnimationCurve(animationCurve)


更新:この質問に含まれるソリューションも同様に機能します。

var animationCurve = UIViewAnimationCurve.EaseInOut
NSNumber(integer: 7).getValue(&animationCurve)
于 2014-08-06T21:00:56.497 に答える