4

こんにちは、私のアプリケーションでは、statusbarorientation値を知りたいです。そのために私は [UIApplication sharedApplication].statusBarOrientationメソッドを使用しています。実際には、このメソッドはランドスケープ モードの場合は 4 を返し、ポートレート モードの場合は 2 を返す必要があります。しかし、このメソッドは逆の方法で値を返します。ランドスケープ 2 とポートレイト 4 の手段です。この問題を解決する方法を教えてください。supportedInterfaceOrientationsメソッドで return を使用していますUIInterfaceOrientationMaskAll;

この問題を解決するために私を助けてください。

4

1 に答える 1

1

これは、UIDeviceOrientationLandscapeRight が UIInterfaceOrientationLandscapeLeft に割り当てられ、UIDeviceOrientationLandscapeLeft が UIInterfaceOrientationLandscapeRight に割り当てられているために発生する可能性があります。

これは、デバイスを回転させるにはコンテンツを反対方向に回転させる必要があるためです。

iOS 8 以降では、UIInterfaceOrientation 定数を使用したり、インターフェイスの向きに関してアプリを記述したりするのではなく、UITraitCollection および UITraitEnvironment API を使用し、これらの API で使用されているクラス プロパティのサイズを設定する必要があります。

とにかく、この方法でオリエンテーションを行うことは私にとってはうまくいきました。

var orientation = UIApplication.SharedApplication.StatusBarOrientation;
switch (orientation)
{
case UIInterfaceOrientation.PortraitUpsideDown:
// The device is in portrait mode but upside down, with the device held upright and the home button at the top.
case UIInterfaceOrientation.Portrait:
// The device is in portrait mode, with the device held upright and the home button on the bottom.
case UIInterfaceOrientation.LandscapeLeft:
// The device is in landscape mode, with the device held upright and the home button on the left side.
case UIInterfaceOrientation.LandscapeRight:
// The device is in landscape mode, with the device held upright and the home button on the right side.
case UIInterfaceOrientation.Unknown
// The orientation of the device cannot be determined.
}

それも考慮してください

ただし、アプリに回転可能なウィンドウ コンテンツがある場合は、この方法を使用してステータス バーの向きを勝手に設定しないでください。このメソッドで設定されたステータス バーの向きは、デバイスの向きが変わっても変わりません。

于 2015-01-28T11:55:13.650 に答える