4

嗨,在我的应用程序中,我想知道statusbarorientation值。为此,我正在使用 [UIApplication sharedApplication].statusBarOrientation方法。实际上这个方法必须返回 4 用于横向和 2 用于肖像模式。但是这个方法以相反的方式返回值。用于风景 2 和肖像 4 的方法。请让我知道如何解决此问题。supportedInterfaceOrientations在我使用的方法中返回UIInterfaceOrientationMaskAll;

请帮我解决这个问题。

4

1 回答 1

1

这可能是因为 UIDeviceOrientationLandscapeRight 被分配给 UIInterfaceOrientationLandscapeLeft 而 UIDeviceOrientationLandscapeLeft 被分配给 UIInterfaceOrientationLandscapeRight。

这样做的原因是旋转设备需要沿相反方向旋转内容。

从 iOS 8 开始,您应该使用 UITraitCollection 和 UITraitEnvironment API,以及这些 API 中使用的大小类属性,而不是使用 UIInterfaceOrientation 常量或以其他方式根据界面方向编写应用程序。

无论如何,以这种方式进行定向对我有用。

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 回答