我有一個應用程序使用接近傳感器,但接近傳感器不能在橫向模式下工作。我聽說如果你保持在縱向模式狀態欄它傳感器將工作 我試過這個,但它沒有奏效。iOS保持縱向狀態欄
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO];
狀態欄仍然切換到橫向模式。
我該怎麼辦?
我有一個應用程序使用接近傳感器,但接近傳感器不能在橫向模式下工作。我聽說如果你保持在縱向模式狀態欄它傳感器將工作 我試過這個,但它沒有奏效。iOS保持縱向狀態欄
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO];
狀態欄仍然切換到橫向模式。
我該怎麼辦?
如果您希望將您的應用保持爲縱向模式而不管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];
將不起作用(我從個人經驗中發言)。
這當然假設你使用的是iOS 6.0或更高版本 – Tcharni
謝謝,但是我的應用程序是爲橫向模式而設計的,所以如果它是縱向模式,那麼它會搞亂一切。 – msweet168
我編輯了我的答案,請讓我知道它現在是否有效:D – Tcharni