我有以下代码:
-(void)viewWillAppear:(BOOL)animated {
UIDeviceOrientation orientation = [[UIDevice currentDevice] UIInterface];
if(orientation==UIDeviceOrientationLandscapeLeft || orientation==UIDeviceOrientationLandscapeRight) {
NSLog(@"Device Landscape");
} else {
NSLog(@"Device Portrait");
}
}
这适用于模拟器和设备,但只有当iPad在表面上不平坦时,例如,如果我将iPad放在桌面上并加载视图,它会说出它的肖像,所以我无法检测到视图出现时的方向。
调用viewWillAppear时检测界面方向的最佳方法的任何想法?
由于
答案 0 :(得分:27)
您应该使用[self interfaceOrientation]
代替设备方向。
答案 1 :(得分:9)
[[UIApplication sharedApplication] statusBarOrientation]
也适用于您无法访问[self interfaceOrientation]
的代码中的某个地方
答案 2 :(得分:0)
首先,你知道UIViewController的interfaceOrientation属性吗?看起来你正试图复制它。如果你真的想这样做,只需订阅设备方向更改通知,检查新方向是否是有效的界面方向(这是一个宏),如果是,则将值存储到某个变量(如lastSeenOrientation)。然后,您可以随时随地依赖该值。