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在我的例子中,在任何旋转之前,我移除了导航。你有可能在过渡前后淡入淡出吗?