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に反映されてる。