Apple Engine

Apple, iPhone, iOS, その周辺のことについて

Xcode 10 の Augmented Reality App テンプレートで X 系端末が画面全体表示にならない問題を解決する

Xcode 9 の ARKit 用テンプレート、Augmented Reality App では ViewController の View に ARSCNView が設定されており フルスクリーン的な画面全体で表示されていたが、
Xcode 10 では ViewController の下に UIView が設定されており、
その下に ARSCNView が設定されているため Safe Area のコンストレイントが効いてしまう。

今回はそれを解決する。
内容は Main.storyboard の修正のみ。

 

はじめに Augmented Reality App で新規の ARKit アプリを作成する

f:id:x67x6fx74x6f:20180928193611p:plain

いつも通り Xcode で新規プロジェクトを作成(Command + Shift + N)
Augmented Reality App を選択して、Next ボタンクリック。
ファイル名を適当に設定して保存。

 

ビルドすると Safe Area 内に表示されるため、黒い背景が表示されてしまう。

 

画面全体に表示するため、作成されたプロジェクトの Main.storyboard を開き修正してゆく。

 

Main.storyboard の表示端末を変更

View as 〜 をクリックして iPhone XS 等に変更。

f:id:x67x6fx74x6f:20180928193614p:plain

 

View の Safe Area の Layout Guide を外す。

View を選択し、右側の Size Inspector (Command + Option + 5) をクリック。 Safe Area Layout Guide のチェックを外す。

f:id:x67x6fx74x6f:20180928193617p:plain

 

ビルドすると全画面表示になる。

 

必要に応じて View 内に UI を置き Safe Area のマージンを基準としたコンストレイントを設定する。
今回は左上にボタンを置いてみた。

f:id:x67x6fx74x6f:20180928193620p:plain

 

今回は簡易的にボタンを置いたが、ちゃんと設定したい場合は、View も ARSCNView も全体表示にして、UI として ARSCNView の前に置くものに Safe Area を適応したほうがよさそう。

また、ARSCNView の Overlay として UI を置く場合は、ARSCNView が全体に表示されているため Safe Area を適応することができない。
コード上で Safe Area のサイズを取り調整する必要がある。

 

注意点

Xcode 9 でビルドした ARKit のアプリも Safe Area Layout Guide のチェックがあると、iOS 12 で全画面にならない可能性あり。
修正してビルドする必要があるかも。