iPhone6/6plusの対応を現在進めている。
対策内容としては比較的単純で、下記の内容を行い確認していった。
・storyboardでの位置の指定を変更
・サイズを画面サイズに合わせて可変に変更
・コードで直接アドレスを指定している箇所を、画面サイズから計算して指定するように変更
基本的にこれで対応可能で、必要に応じて、画像の追加も行う形で進めていた。
しかし、これだけでは対応できないケースが出てきてしまった。
タイトルにも書いているように、Landscapeの画面を混ぜているアプリで上手く動かなかった。
自分のアプリは、広告表示のために基本Portrait表示固定にしている。
その中で、「ゆびてんじ」だけは例外的にLandsapeの指定が可能にしている。
これは、アプリの性質上、横向きでないと使いにくくなってしまうために行った。
ここで、上手く動かない場合があった。
使っていただいた方はわかると思うが、途中でPortrait→ Landscape→ Portraitと変更される。
ここで、次のような現象が発生した。
Landscape→ Portraitになるところで、画像を生成するのだが、生成される画像が崩れてしまう。
原因は、画像を生成するUIViewControllerへ移った時、前の状態が残ってしまっていた。
つまり、最終的に表示させる時には、Portraitなのだが、画像生成の途中まで、Landsapeとなっていた。
このため、生成する画像の位置がずれてしまい、最終的な画像が崩れてしまった。
対策をいろいろと試したのだが、途中で、画像の生成の途中で向きが変わってしまうので単純にはできなかった。
結果的に、画面の向きが変わってから画像生成を行うように対策。
画像生成前に、表示中の画面向きを判定し、Landscapeの時にはタイマを設定して、待つことにした。
タイムアウトで再度、画面向きの判定を行い、Portraitになっていた時に実際の画像生成処理を実行。
向きが変更されるまでひたすらタイマを繰り返して待つというなんとも格好の悪い対応をしてしまった。
すでに申請を行って、審査待ちと成っているのだが、よく考えたら、向きの変更のイベントを受け取ることができたような気がしてきた。
今更取り下げて、修正する気にもなれないので、今回はこのままにするが、機会があれば、もう少しすっきりした形に修正したい。
[0回]
PR