MD Blog

誰かの何かに役に立てることを書いていきたいです

[iOS 7] iOS 7 独特のアニメーションを実装する

iOS 7 から UIActionSheet や UIAlertView などが表示される際のアニメーションが変更されました。新しいアニメーションではアニメーション終了前に動きが極端に減速し、ふわっとした軽快な印象を与えます。

これを独自に実装しようとした場合に、UIView のアニメーションメソッドの options に UIViewAnimationOptions のどの値を設定しても再現しません。

その代わりに options に (7 << 16) を指定するとうまくいきました。

審査に通るかどうかは分かりませんので自己責任で。 審査に通りました。

[UIView animateWithDuration:0.2
                          delay:0
                        options:(7 << 16)
                     animations:^{
                        // animation
                     }
                     completion:^(BOOL finished) {
                     }];

追記

animateWithDuration:delay:usingSpringWithDamping:initialSpringVelocity:options:animations:completion:

メソッドで実現できました。

References

uikeyboard - UIKeyboardWillChangeFrameNotification UIViewAnimationCurve set to 7 on iOS 7 - Stack Overflow