1

縦向きまたは横向きモードで起動できるアプリがあります。メイン画面のコントロールは、アプリケーションのモードによって異なって見えます。

ここに問題があります-アプリケーションを横向きモードで起動すると、コントロールが本来あるべき場所に配置されず、アプリが縦向きモードのように位置が保持されます。私はこれを少しテストしようとしましたが、ここに私が見つけたものがあります -

viewDidLoad と ViewWillappear で、アプリは横向きモードですが、アプリが縦向きモードであるという情報を取得します。ビューでは、正しい値に設定されているように見えました-ランドスケープモード。問題は、ビューが表示される前に、これらのコンポーネントを適切な位置に設定することです (そうでない場合は、画面上で再配置されていることがはっきりとわかりません)。

これを処理する適切な方法は何ですか?

編集: viewDidLoad と ViewWillAppear で、私はこれを呼び出します:

orientation = [self getOrientation];
if (orientation == OrientationsLandscape) {
    NSLog(@"Landscape");
}
else {
    NSLog(@"Portrait");
}

ここに[getOrientation]の実装があります

 - (int) getOrientation {
    int currentOrientation = [UIApplication sharedApplication].statusBarOrientation;
    if (UIInterfaceOrientationIsPortrait(currentOrientation)) return OrientationsPortrait;
    else return OrientationsLandscape;
}

および列挙定義:

typedef enum {
     OrientationsLandscape = 0,
     OrientationsPortrait
} Orientations;

デバイスが横向きモードでアプリをインストールしようとすると、「横向き」ではなく「縦向き」が 2 回印刷されます。

4

2 に答える 2

1

これを試して:

[UIApplication sharedApplication].statusBarOrientation
于 2012-03-29T13:20:00.217 に答える
0

autoresizingMask重要なこととして、すべての UI 要素のプロパティが正しく設定されていることを確認してください。次に、この問題が発生したときに init メソッドで修正しました。init では、SVGreg が提案するように iPad の向きを制御し、正しいフレームを UI 要素に設定する必要があります。

于 2012-03-29T15:03:05.333 に答える