[iOS] iOS6 から起動時に一度 Portraitになる挙動が変更された模様
iOS6 からは画面の回転関係の仕様が整理されたのか、いろいろと変更が入っている。
まず – (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
は使えなくなったので、その対応が必要。
これはいろいろなところに情報が書かれている。
その対応は入れていたつもりだったのだが、今回 Landscape 状態でアプリを起動してみたところ部品が正しく配置されない問題が発生してしまった。
いろいろ試してみたところ、iOS5 までは正しく動作するが、iOS6 から問題が発生することがわかった。どうやらこれまで呼ばれていた didRotateFromInterfaceOrientation が呼ばれなくなっているようだ。
hayate-works Note: アプリ起動時にデバイスが横向きだったときのUIViewControllerメソッド呼び出し順
にあるとおり、iOS5 まではLandscapeで起動しても Portrait の状態から始まっていたのだが、iOS6 からはその挙動が変更されており、Landscape で起動してくるようだ。
このため、Landscapeで起動したときには上記 URL で書いている didRotateFromInterfaceOrientation (Landscape) が呼ばれなくなってしまった。
Landscapeで起動しているのに一度Portraitになっていたのはある意味これまでの挙動がおかしかったわけだが、didRotateFromInterfaceOrientation が呼ばれることを期待してそのタイミングで部品を配置するコードを書いていた場合、画面表示がおかしくなってしまうことがわかった。
例えばこちらも同じ問題に遭遇しているようだ でらうま倶楽部 : OpenGL ES系はとくに。 iOS6への対応で気をつける事
View Controller Programming Guide for iOS: Supporting Multiple Interface Orientations
とりあえず iOS6でも viewDidAppear のタイミングではLandscape状態になっているので、そのタイミングで部品を配置したところ正しく配置されたが、他に良い方法がありそうな気がする。
同じような議論あり
willAnimateRotationToInterfaceOrientation not being called « Sparrow Forum
関連記事
-
iPad mini 用透明ハードケース eggshell for iPad mini
iPad mini 用にハードケースを購入した。 iPad 用ケー
-
LogLocations 1.3.2 をリリースしました
LogLocations 1.3.2をリリースしました。審査後、近日中に公開されます。下記のレビュー
-
[iOS9] jQuery Mobile のBackボタンが動作しない
自作アプリ EverLearn や Reibun でヘルプファイルの表示用にローカルに保存した jQ
-
iOS7 から導入されるキッズカテゴリーにアプリを載せるための作業をしてみる
News and Announcements for Apple Developers でア
-
英単語学習アプリ EverLearn 1.4.0 を公開しました
ようやく、iOS7 に対応した EverLearn 1.4.0 を公開しました。 i
-
iPhoneとBluetooth連携できる体重計 タニタ RD-900
iPhone と連携できる体重計には以前から興味があって、Withings の WS-30 を狙って
-
[iPhone アプリマーケティング] Yappler.com に登録してみた
たまたま検索していて発見した、Yappler.com に試しに登録してみた。 iPhoneアプリ開発
-
[iOS 開発本] iOSフラットデザインの作法
iOS7で採用されたフラットデザインに関して、個人的には Windows 8のMetroのイ
-
[iPhone開発本] オライリー iPhoneアプリケーション開発ガイド 感想その1
面白そうだったので発売日に買ってみた。1995円と安いのもすばらしい。 しかしタイトルは一ひねりした