JUCEでデバイスの回転を検知する


JUCEでiOS向けアプリを書いていて、デバイスの回転(orientation change)を検知する方法。

前提

Projucerを使ってアプリ/プラグインのプロジェクトを作っている。

検知方法

まず、起動した時のサイズをチェック。

sample.cpp
auto r = juce::Desktop::getInstance().getDisplays().getPrimaryDisplay()->totalArea;
setSize (r.getWidth(), r.getHeight()); 

これでデバイスのスクリーンサイズがわかる。iPad Pro 9.7inchなら1024x768か768x1024が返ってくる。このサイズでeditorのサイズをセットしておく。

その後、デバイスを回転するたびにAudioProcessorEditorクラスのresized()が呼ばれる。widthとheightが入れ替わるので、それに応じて自分のeditorを調整。ただし、Projucerのプロジェクト設定でチェックしてないScreen Orientationの時は呼ばれない。デフォルトでは180度(ポートレートの逆さま)はチェックが外れてるので、これが必要な時は自分でチェックしておくこと。iPhoneとiPadで設定は別々。この設定はそのままXcodeのTARGETS>General>Deployment Infoに反映されてる。