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

Apple

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

 今日は、横画面のアプリの開発をするときに起きた出来事。口で言うとわかりにくいんだけど、 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枚仕込むようにしましょう。みんなも気をつけてね。

 おわり。

コメント

タイトルとURLをコピーしました