この質問は少し奇妙です。Adobe AIR で、アプリの iPhone バージョンと iPad バージョンを 1 つのアプリに結合しようとしています。しかし、私はオリエンテーションを扱うのに苦労しています。iPad ではアプリを横向きモードで表示し、iPhone では縦向きモードで表示する必要があります。
これはできますか?
この質問は少し奇妙です。Adobe AIR で、アプリの iPhone バージョンと iPad バージョンを 1 つのアプリに結合しようとしています。しかし、私はオリエンテーションを扱うのに苦労しています。iPad ではアプリを横向きモードで表示し、iPhone では縦向きモードで表示する必要があります。
これはできますか?
shouldAutorotateToInterfaceOrientation でこれを行う
ただし、それに応じてビューを調整することを忘れないでください (適切なフレームを subView に設定します)。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
return UIInterfaceOrientationIsPortrait(interfaceOrientation);
else
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
最初の問題は、デバイスが iPad か iPhone かを検出することです。これを行う唯一の方法は、デバイスの解像度を確認することだと思います(もちろん、さまざまなデバイスに個別のバイナリを配布できますが、これを1つのアプリで行うと述べました)。
通常、XML アプリ記述子で画面の回転を処理できます。次に例を示します。
<aspectRatio>landscape</aspectRatio>
<autoOrients>false</autoOrients>
ただし、デバイスごとに異なるアクションを実行したいので、これではうまくいきません。
私が過去に使用した別の方法は、Orientation イベントを検出してデフォルトを防止し、AS3 を介して手動で方向を設定することです。これを行う方法の良い例を次に示します。AS3 - iOS は横向きモードのみを強制しますか?
そこに示されているコード サンプルを使用すると、デバイス検出/画面解像度検出コードを取得し、画面の向きをそのデバイスの適切な検出に設定するだけです (そして、そのデバイスの適切な向きイベントを防止します)。
それでも必要な場合に備えて、ポートレートのみで同じことを行うために、「強制ランドスケープモードのみ」を適応させました. コードは次のとおりです。
var startOrientation:String = stage.orientation;
if ( startOrientation == StageOrientation.ROTATED_RIGHT)
{
stage.setOrientation(StageOrientation.UPSIDE_DOWN);
}else if(startOrientation == StageOrientation.ROTATED_LEFT){
StageOrientation.DEFAULT;
}
else
{
stage.setOrientation(startOrientation);
}
stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING, orientationChangeListener);
function orientationChangeListener(e:StageOrientationEvent)
{
if (e.afterOrientation == StageOrientation.ROTATED_RIGHT || e.afterOrientation == StageOrientation.ROTATED_LEFT )
{
e.preventDefault();
}
}