我基本上运行这段代码:
UIInterfaceOrientation statusBarOrientation = [[UIApplication sharedApplication] statusBarOrientation];
if(statusBarOrientation == UIInterfaceOrientationPortrait){
NSLog(@"orientation is portrait");
}
但是,无论模拟器或iPad的实际方向如何,都会打印“orientation is portrait”。尝试NSLog将statusBarOrientation作为%d也返回1,无论方向如何。
我坚持这是我的app委托,我的视图控制器,以及我需要它的类,以及它的相同之处。我的info.plist /目标设置支持所有4个设备方向。
有没有人能够确定接口方向,或者为什么我的工作不正常?感谢
答案 0 :(得分:3)
如果您不想使用Notification进行定位..那么也可以使用以下方法。
这是iPad中只有横向定位和iPhone中的肖像的示例......
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
if(interfaceOrientation==UIInterfaceOrientationLandscapeLeft ||
interfaceOrientation==UIInterfaceOrientationLandscapeLeft)
return YES;
else
return NO;
}
else
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
}
答案 1 :(得分:1)
您可以注册有关方向更改的通知:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotate:)
name:@"UIDeviceOrientationDidChangeNotification"
object:nil];
- (void)didRotate:(NSNotification *)notification
{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if ((orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight)) {
// DO STUFF
}
else if (orientation == UIDeviceOrientationPortrait) {
//DO MORE STUFF
}
}
答案 2 :(得分:0)
目前您正在返回状态栏的方向。而是获取设备的方向:[[UIDevice currentDevice] orientation]