这可能是因为 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.
}
还要考虑
但是,如果您的应用程序具有可旋转的窗口内容,则不应使用此方法任意设置状态栏方向。如果设备改变方向,此方法设置的状态栏方向不会改变。