gorod’s diary

楽天ブログに過去記事あります

iOS16対策!

そろそろiOS16の使用開始まで近づいて来たので、2022/09/12にデベロッパーのみに公開されたiOS16を使って、自分の作ったアプリの動きチェックをしてみました〜!

 

うおおおお!

初回のみの画面固定が…

出来ないぞー!!

 

という結果でしたw

(それ以外は特に問題なし)

 

orientation

だったかな?

この値を入れることが出来ないんですよ。

portrait

と設定してもさぁ…。

上手くいかないのだよw

 

ん?

どういう時が上手く行かないのかって?

 

例えば、何処かの画面で横にしたとしようw

で、テーブルの上に置いたとする。

この状態だと、内部では横を維持してる状態なんですね。

で、画面回転okな画面を開くと、その内部で持っている傾きを優先にして開く性質があるんですよ。

 

ちょっとシステムちっくな言い方をすると

横向き→フラット→画面回転可能画面open

ってすると横向きとして表示。

という感じです。

 

iOS16以前のバージョンでは、この現象をストップさせる技としてとあるコードを使っていたのですが、それが廃止となり…orz

 iOS16以降はこの技にしてね!とデベロッパーのサイトに書いてあった通りのPGを記載して試したところ…。

 

マジか!!

タイムアウトで変数に設定出来ないやん!

 

といった悲しい状態となりましたw

 

ここら辺は、 iOS16以前、以降の両方のPGが書かれてますのでご参考下さい。

iOS16で画面回転できないときの対応 - Qiita

上記の管理人さん、ありがとうございます!

 

で、ここら辺どうしたか?って??

 

まずは、画像の表示画面から行きますかw

こっちは、仕方がないので現在の画面の傾き状態を追いかける方法にしましたw

で、画面回転ok画面に辿り着くまでに、どの傾きを保持して来たか?

これを判定してフラットの場合はその値を使用する方向にしました。

 

しかしねーw

 

フラットの場合って、端末側は縦として誤認するんですよ。

なのに初期表示は横で出るとw

(内部判定が横のパターンの場合)

 

なので、幅と高さが縦判定の結果を打ち出すわけなんですね!

画面表示は横で出るのに〜w

 

なので、ここいら辺の対処には奮闘しましたw

 

縦誤認の場合は、幅と高さを反転する処理を入れないと横向きなのに縦表示となるので要注意です。(フラット時)

 

でもね〜。

カメラの場合は…。

こっちの画面をいくら横判定にさせても、カメラのピントが縦認識になってしまうので、お手上げ〜\(^ω^)/の状態になりましたwww

 

カメラは縦表示から行うのが、iOSのルールなんかなぁ?って思いましたσ(^_^;)

iOS16で、初回表示のみ縦固定にするやり方知ってる人居たら教えて欲しいです〜。

 

ま、今は仕方がないので、ヒントに追記してる状態なんですけどね。(横向きのままだとピントがズレるって話を)

 

私のアプリではiOS16対応はこんな感じでした〜。

 

 

ではでは!