UIKeyboardの動きに合わせてviewをアニメーションさせる方法
UIkeyboardの動きに合わせてビューも移動させたい。以下の動画ではピンクの部分が対象のビュー。
通常の方法 NSNotificationCenterを使い、キーボードの動きを通知。その際にキーボードの動きに合わせてビューのアニメーションを行う。キーボードのアニメーションに関するパラメータはNSNotificationCenterの引数として渡されるので、それを使用する。
問題点 NSNotificationの引数として渡されるUIKeyboardのアニメーションの動きはUIViewAnimationCurve型。しかし、UIViewのアニメーションを定義するのに必要なパラメータはUIViewAnimationOptions型。なのでUIViewAnimationCurveをUIViewAnimationOptionsに変換してあげる必要がある。UIViewAnimationOptionsはドキュメントでは4つ定義してあり、通常であればこの4つのいずれかに当てはまるはず。ところが、UIKeyboardに使われてるUIViewAnimationCurveは上記のいずれのオプションにも当てはまらない。iO7以降では、KIKeyboardのアニメーションはドキュメント非記述の設定で動いているようだ。
解決案 UIViewAnimationCurveの値を強引にUIViewAnimationOptionsに変換する。どうやらUIViewAnimationCurveをビット演算で左に16回シフトするとUIViewAnimationOptionsの値になるようだ。
- (void)keyboardWillMove:(NSNotification *)n{
CGRect keyboardFrame = [n.userInfo[UIKeyboardFrameEndUserInfoKey]CGRectValue]; //animation params NSTimeInterval duration = [n.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; UIViewAnimationCurve keyboardCurve = [n.userInfo[UIKeyboardAnimationCurveUserInfoKey]intValue]; UIViewAnimationOptions keyboardOption = keyboardCurve << 16; _bottmSpaceToInputView.constant = self.view.frame.size.height - keyboardFrame.origin.y; //animation action [UIView animateWithDuration:duration delay:0.0 options:keyboardOption animations:^{ [self.view layoutIfNeeded]; } completion:nil];
}
RELATED POSTS
- 2014-05-26
UIImageの画像をリサイズ、回転、反転したい場合がある。こんなときにはQuartz 2D APIを使用する。Quartz 2D APIはCore Graphicsフレームワークの一部。
- 2014-07-03
新幹線を予約するのに、エクスプレス予約を使っているが恐ろしく使いにくい。せめて空席の検索だけでも簡単にできないかと思い、簡単なアプリを作ってみた。
- 2014-12-07
モバイルアプリでAmazonの商品を扱うためのAPIについて調べてみた。アプリ内で購入まで完結させる機能もある。商品が売れればアプリの開発者は最大6%のマージンを受け取ることができる。この内容を見るとすごく魅力的。
- 2018-11-09
iOSのふらっとデザインがなぜうまく作用するのかを考えた。出てきた当初は使いづらかった。今はうまく使える。
- 2015-04-25
- 2015-04-23
Xcode6でのローカライズの流れを調べた。ローカライズが必要なのは以下のもの。
- 2013-12-04
開発を担当したiOSアプリが最近リニューアルリリースされました。手作りの作品を購入・販売できるアプリ、minne。急激に盛り上がるモバイルのC2Cサービスの中でもハンドメイドに特化したアプリなので、商品のラインナップにはかなり特徴があります。ぜひDLしてみてください!
- 2013-12-02
そのうち役にたちそうなのでメモ。 OpenWeatherMapは開発者に無料で天気情報を提供するオンラインサービス。APIはJSONやxmlで取得可能。このAPIをiOSやMac OSX でより簡単に利用できるライブラ
- 2014-04-18
グランフロント大阪のイノベーションハブにて催されたTechCrunch主催のハッカソン。テーマがIoTだったので興味を惹かれて参加。良いチームにも恵まれ色々と発見ができたイベントだったので内容を記録。
POPULAR POSTS
- 2015-05-09
巷で大人気のチャットツール、slackのUIを舐めてみた。あまり詳細な部分は見れてない。
- 2013-08-06
友人が運営するイベントに誘われ面白そうなので参加してきた。36時間で新しい照明を作り出すハッカソン、Design Loves Engineering。面識のないデザイナーとエンジニアがその場でチームを編成し、その後2日間で照明を作り出そうというイベントだ。開催場所のFabLab Kitakagayaはレーザーカッターや3Dプリンターを備えた実験工房。
- 2012-05-11
最近「STARTUP WEEKEND」なるイベントがある事を知った。面白そうなので、ミーハーな自分は本日5/11からの東京でのイベントに参加してみる事にしました!
- 2015-04-25
- 2014-05-26
UIImageの画像をリサイズ、回転、反転したい場合がある。こんなときにはQuartz 2D APIを使用する。Quartz 2D APIはCore Graphicsフレームワークの一部。
- 2015-04-22
AlfredやFlashlightが便利なのでUIを考察してみた。Alfredは以前からよく使われているMac用のランチャーアプリ。FlashlightはYosemite用Spotlightのプラグインで最近評判がいい。
- 2015-04-19
WebおよびモバイルアプリのUIデザインをやることになりそうなので、モックアップツールを調べた。どうやらUI用のモックツールは以下の2種に大別されるらしい。ここにシンプルにまとまってた。
- 2015-05-28
自分はwebデザインの素人だ。とはいえ、今後はプロダクトのwebデザインに手をつける必要がありそうだ。なので最近のwebページのレイアウトをざっくりトレースしてみた。トップページのみ。
- 2015-05-12
普段使っているRSSリーダアプリfeedlyのUIを検証してみた。普段はデスクトップアプリをメインに使っている。
- 2014-03-02
23andmeの検査キットをつかって唾液を送って一ヶ月後、DNA検査の結果が閲覧可能になった旨を知らせるメールが届いた。 結果を順に紹介してみる。
- 2015-04-23
Xcode6でのローカライズの流れを調べた。ローカライズが必要なのは以下のもの。
- 2014-12-07
モバイルアプリでAmazonの商品を扱うためのAPIについて調べてみた。アプリ内で購入まで完結させる機能もある。商品が売れればアプリの開発者は最大6%のマージンを受け取ることができる。この内容を見るとすごく魅力的。