1

この質問は少し奇妙です。Adobe AIR で、アプリの iPhone バージョンと iPad バージョンを 1 つのアプリに結合しようとしています。しかし、私はオリエンテーションを扱うのに苦労しています。iPad ではアプリを横向きモードで表示し、iPhone では縦向きモードで表示する必要があります。

これはできますか?

4

3 に答える 3

2

shouldAutorotateToInterfaceOrientation でこれを行う

ただし、それに応じてビューを調整することを忘れないでください (適切なフレームを subView に設定します)。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

 if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
     return UIInterfaceOrientationIsPortrait(interfaceOrientation);
 else
     return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
于 2012-09-27T12:14:13.087 に答える
1

最初の問題は、デバイスが iPad か iPhone かを検出することです。これを行う唯一の方法は、デバイスの解像度を確認することだと思います(もちろん、さまざまなデバイスに個別のバイナリを配布できますが、これを1つのアプリで行うと述べました)。

通常、XML アプリ記述子で画面の回転を処理できます。次に例を示します。

<aspectRatio>landscape</aspectRatio>
<autoOrients>false</autoOrients>

ただし、デバイスごとに異なるアクションを実行したいので、これではうまくいきません。

私が過去に使用した別の方法は、Orientation イベントを検出してデフォルトを防止し、AS3 を介して手動で方向を設定することです。これを行う方法の良い例を次に示します。AS3 - iOS は横向きモードのみを強制しますか?

そこに示されているコード サンプルを使用すると、デバイス検出/画面解像度検出コードを取得し、画面の向きをそのデバイスの適切な検出に設定するだけです (そして、そのデバイスの適切な向きイベントを防止します)。

于 2012-09-27T13:59:23.050 に答える
0

それでも必要な場合に備えて、ポートレートのみで同じことを行うために、「強制ランドスケープモードのみ」を適応させました. コードは次のとおりです。

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();
   }
}
于 2013-01-31T18:34:40.577 に答える