Ios 视图控制器上的强制方向

Ios 视图控制器上的强制方向,ios,xcode,Ios,Xcode,在我的应用程序中,我有一个导航控制器,它显示一个强制纵向的视图控制器。点击屏幕上的一个按钮,就会执行一个按钮,并显示一个视图控制器,它不受方向的限制,它支持所有方向。问题是,当我点击后退按钮时,我在横向中,第一个视图控制器显示在横向中,而不是预期的纵向中。 我已经实现了所有定向方法,例如每个视图控制器的supportedInterfaceOrientation,但我没有找到强制第一个视图控制器纵向的方法。我能够通过在ViewWillExisten事件中调用以下命令来强制特定视图的定向: // L

在我的应用程序中,我有一个导航控制器,它显示一个强制纵向的视图控制器。点击屏幕上的一个按钮,就会执行一个按钮,并显示一个视图控制器,它不受方向的限制,它支持所有方向。问题是,当我点击后退按钮时,我在横向中,第一个视图控制器显示在横向中,而不是预期的纵向中。
我已经实现了所有定向方法,例如每个视图控制器的supportedInterfaceOrientation,但我没有找到强制第一个视图控制器纵向的方法。

我能够通过在
ViewWillExisten
事件中调用以下命令来强制特定视图的定向:

// LOCK SCREEN ORIENTATION TO LANDSCAPE
AppDelegate *appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
[appDelegate setLockLandscape:YES];

// CHECK CURRNET ORIENTATION
if([[UIDevice currentDevice] orientation] != UIInterfaceOrientationLandscapeRight){

    // TRANSITION ORIENTATION TO LANDSCAPE
    NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
    [[UIDevice currentDevice] setValue:value forKey:@"orientation"];

}else{

    // SET ORIENTATION TO PORTRAIT
    NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
    [[UIDevice currentDevice] setValue:value forKey:@"orientation"];

    // TRANSITION ORIENTATION TO LANDSCAPE
    value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
    [[UIDevice currentDevice] setValue:value forKey:@"orientation"];

}
转换视图 这会将视图设置为特定方向的动画,但该方向不必锁定:

// TRANSITION ORIENTATION TO LANDSCAPE
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
锁定方向 这将锁定视图:

AppDelegate *appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
[appDelegate setLockLandscape:YES];
我能够调用
[appDelegate setLockLandscape:YES]来自我在我的
appDelegates
中创建的属性
lockscape
以及以下函数:

@属性(赋值,非原子)布尔锁

//////////////////////////////////////////
// DELAGATE FUNCTION - LOCK ORIENTATION
-(UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{

   // CHECK LOCK LANDSCAPE
   if (self.lockLandscape){

       // LOCK LANDSCAPE
       return UIInterfaceOrientationMaskLandscape;

   }else{

       // LOCK PORTRAIT
       return UIInterfaceOrientationMaskPortrait;

   }

} // END - FUNCTION DELAGATE

另一个代码是修复从另一种类型的横向过渡时出现的错误,而不是我强制执行的横向过渡。

可能重复我尝试过的[[UIDevice currentDevice]setValue:value forKey:@“orientation”];代码,但问题是当视图旋转到选定的方向时,导航控制器的弹出动画看起来非常糟糕,因此我正在寻找一个具有更好图形的解决方案result@blackstar26在我的例子中,在任何旋转之前,我移除了导航。你有可能在过渡前后淡入淡出吗?