我需要在我的UIViewController的viewWillAppear方法中获取接口方向。我做的是:
if (self.interfaceOrientation == UIInterfaceOrientationPortrait)
NSLog(@"Portrait");
else
NSLog(@"Landscape");
在横向拍摄时,我总是在viewDillAppear中获取Portrait并在viewDidAppear中获得Landscape。为什么呢?
所以,我尝试使用[[UIApplication sharedApplication] statusBarOrientation],但同样的情况也是如此。我还尝试了在Stack Overflow中发布的另一个解决方案:
UIDevice* device = [UIDevice currentDevice];
[device beginGeneratingDeviceOrientationNotifications];
UIDeviceOrientation currentOrientation = device.orientation;
[device endGeneratingDeviceOrientationNotifications];
这似乎正确地返回了方向,但是现在我留下了将UIDeviceOrientation映射到UIInterfaceOrientation的问题,据我所知这是不可能的(面朝上和面朝下都无法映射)。
此问题的任何解决方案?
答案 0 :(得分:0)
使用[UIApplication sharedApplication] .statusBarOrientation代替。
if([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait || [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown) {
// Portrait
}
if( [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft || [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight){
// Landscape
}
答案 1 :(得分:0)
JasonCoco的第一个评论是我在这个问题上找到的最佳解决方案。