我需要在 UIViewController 的 viewWillAppear 方法中获取界面方向。我所做的是:
if (self.interfaceOrientation == UIInterfaceOrientationPortrait)
NSLog(@"Portrait");
else
NSLog(@"Landscape");
在横向时,我总是在 viewWillAppear 中获得肖像,在 viewDidAppear 中获得横向。为什么?
所以,我尝试使用 [[UIApplication sharedApplication] statusBarOrientation],但同样的情况发生了。我还尝试了 Stack Overflow 中发布的另一个解决方案:
UIDevice* device = [UIDevice currentDevice];
[device beginGeneratingDeviceOrientationNotifications];
UIDeviceOrientation currentOrientation = device.orientation;
[device endGeneratingDeviceOrientationNotifications];
这似乎正确地返回了方向,但现在我留下了将 UIDeviceOrientation 映射到 UIInterfaceOrientation 的问题,据我所知这是不可能的(无法映射面朝上和面朝下)。
这个问题有什么解决办法吗?