【iOS6 later】StoryboardでLandscapeしたら、ViewControllerで self.view.frame のWidthとHeightが逆で困った

Pocket

 性懲りもなく、失敗を失敗を繰り返して結果的にはノウハウがいっぱい溜まってきていますが、今日も、また、失敗して得しちゃったよ。

 今日は、横画面のアプリの開発をするときに起きた出来事。口で言うとわかりにくいんだけど、 UITextFiled をクリックしたら出るKeyboard。不運にも、このKeyboardが UITextFiled を隠してしまうという現象に出くわしました。

 で、ViewControllerに内包されているViewのyをずらせば解決と思い、うりゃ~っと動かすと、何故か、横にずれる。lol omg!

 こんな感じが

20131104_06

 こんな感じに

20131104_07

 yは縦軸なんだよー。横にずれるってことは縦画面のままかよ〜、といいながら設定を見なおしてみましょう。

 まずは、プロジェクトの設定、info.plist

20131104_01

 続いて Storyboard上の ViewController

20131104_02

 どっちも横画面になってるよ〜〜

 で、色々調べました。AppDelegateのrootViewControllerとか、shouldAutorotateとか、supportedInterfaceOrientations、CGAffineTransformMakeRotationとか、何をやってもうまくいきません。困ったもんだ。困ったところで、一休みして、六甲のおいしい水をがぶ飲みしていると、ふとひらめいた。

 これ、解決できないかも? というのも、StoryBoardでViewController直下のViewの縦横のサイズを確認すると、文字がグレーになってて、readOnly状態。いじるなよと Timothy Donald Cook に言われている気がした。

20131104_05

 なので、Viewをひとつ噛ませて解決した。こんな感じ。

 使用前

20131104_03

 使用後

20131104_04

 self.view の SubView に superBaseView ってのおいてやった。このsuperBaseViewのframeのWidthとHeightは逆になってません。なので、こいつのyをずらせば UITextFiled が縦に動くはず。

 どうだ。

20131104_08

 できた。みごと、UITextFiledがステータバーの下にまで移動しました。完璧!! ということで、はじめからUIViewを1枚仕込むようにしましょう。みんなも気をつけてね。

 おわり。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*