我知道有很多關於如何強制IOS6中的方向的線程,但它們都不適用於我,所以現在我需要一些幫助來解決這個問題。IOS6中的強制橫向視圖
我有一個導航的應用程序,有許多視圖控制器。它們都是縱向視圖,不需要在橫向模式下加載(無需用戶先打開電話)。
在執行我的導航控制器時,我添加了shouldAutorotate,supportedInterfaceOrientations和preferredInterfaceOriantationForPresentation。
@implementation UINavigationController (Rotation_IOS6)
- (BOOL)shouldAutorotate
{
return [self.topViewController shouldAutorotate];
}
- (NSUInteger)supportedInterfaceOrientations
{
return [self.topViewController supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [self.topViewController preferredInterfaceOrientationForPresentation];
}
@end
所以它返回已然後在每個視圖控制器定義的值。
在應用程序委託中,我有supportedInterfaceOrientationsForWindow。
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
//Default orientations value
NSUInteger orientations = UIInterfaceOrientationMaskAllButUpsideDown;
//Get orientation from the last view controller
if(self.window.rootViewController){
UIViewController *presentedViewController = [[(UINavigationController *)self.window.rootViewController viewControllers] lastObject];
orientations = [presentedViewController supportedInterfaceOrientations];
}
return orientations;
}
在每個視圖控制器,然後我有我爲視圖設置,例如:
// Only allow portrait view
-(NSInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskPortrait;
}
- (BOOL)shouldAutorotate {
return YES;
}
我推下一個視圖控制器是這樣的:
NextViewController *nxtController = [[NextViewController alloc] initWithNibName:@"NextViewController" bundle:nil];
[self.navigationController pushViewController:nxtController animated:YES];
但是,當我按住橫向視圖控制器,同時以縱向方向握住手機,同時也以縱向模式加載。如果我然後傾斜手機,它會觸發自動旋轉功能並將視圖旋轉到橫向模式,然後鎖定在該模式下。不過,我需要將其鎖定在橫向模式下,而不使用手機方向來觸發其檢查自動旋轉。 任何想法?
看看[這個答案](http://stackoverflow.com/a/16135071/1262527),也許它可以幫助你。 –