我有一个使用接近传感器的应用程序,但接近传感器在横向模式下不起作用。我听说如果你将状态栏保持在纵向模式下,传感器就能正常工作 我试过这个但是没用。
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO];
状态栏仍然切换为横向模式。
我该怎么办?
答案 0 :(得分:0)
如果您希望将应用程序保持在纵向模式而不管DeviceOrientation,我建议您将以下代码添加到viewController。
- (BOOL) shouldAutorotate{
return NO;
}
- (NSUInteger) supportedInterfaceOrientations{
return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation{
return UIInterfaceOrientationPortrait;
}
这将确保您的应用程序将以纵向模式启动,并保持纵向模式,即使设备已开启。
编辑:为了在纵向模式下只有一个视图的同时保持应用程序的横向,将上面的代码添加到您想要限制为纵向模式的一个viewController。
将以下功能添加到appDelegate:
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
/* This is in order to allow views that do not support landscape mode to be able to load in
*/
return UIInterfaceOrientationMaskAll;
}
将以下代码添加到其他视图控制器:
- (BOOL) shouldAutorotate{
return YES;
}
- (NSUInteger) supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscape;
}
- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation{
return UIInterfaceOrientationLandscapeRight; //you can choose either landscape orientation here
}
我建议您使用此层次结构:
此外,在RootViewController的viewDidApper之后,请使用presentViewController(iOS 6.0及更高版本)或presentModalViewController(iOS 5.x)选择器在屏幕上添加displayViewController的视图。使用[self.view addSubview: displayViewController.view];
将不起作用(我从个人经验中说)。